一尘不染

泛型类,扩展类并实现接口

java

为了减少类的依赖性,我想将参数(使用泛型类)发送到扩展某些类并实现接口的构造函数,例如

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);
}

可能吗?

此外,使用T类,我想使用T.getActivity()作为Context创建视图。


阅读 150

收藏
2020-12-03

共1个答案

一尘不染

T必须扩展Fragment并实现SomeInterface

在这种情况下,您可以声明SomeClass以下内容:

public class SomeClass<T extends Fragment & SomeInterface>

这将需要T扩展Fragment和实现类型的对象SomeInterface

此外,使用T类,我想使用T.getActivity()作为Context创建视图。

我不熟悉Android,但如果getActivity()在中声明了公共实例方法,Fragment则完全有可能在的实例上调用它T,因为编译器将知道所有都T必须继承该方法。

2020-12-03