To reduce dependece of class, I want to send parameter (using generic class) to constructor that extends some class and implements interface, for example
public interface SomeInterface{ public void someMethod(); } public class MyFragment extends Fragment implements SomeInterface{ //implementation } //here is classs, that I need to create. T must extend Fragment and implements //SomeInterface. But, I'm afraid, if I'll use MyFragment directly, it will create a //dependence of SomeClass from MyFragment. public class SomeClass /*generic?*/ { public SomeClass(T parent); }
Is it possible?
Futher, using my T class, I want to create views, using T.getActivity() as Context.
Java Generic Classes and SubtypingWe can subtype a generic class or interface by extending or implementing it. The relationship between the type parameters of one class or interface and the type parameters of another are determined by the extends and implements clauses.
A class can implement more than one interface at a time. A class can extend only one class, but implement many interfaces. An interface can extend another interface, in a similar way as a class can extend another class.
Only generic classes can implement generic interfaces. Normal classes can't implement generic interfaces.
"Interface implementation" is generalised while in android we usually call it "Interface Listener class". In your case if A implements interface B then it will also implement its methods.
T must extend Fragment and implement SomeInterface
In that case you could declare SomeClass
as the following:
public class SomeClass<T extends Fragment & SomeInterface>
That would require an object of type T
to both extend Fragment
and implement SomeInterface
.
Further, using my T class, I want to create views, using T.getActivity() as Context.
I'm unfamiliar with Android, but if getActivity()
is a public instance method declared in Fragment
then will be entirely possible to call it on an instance of T
, since the compiler will know all T
s must inherit that method.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With