我发现了这个问题:Member variable which must extend class A and implement some interface
并且想知道是否有更好的方法。将其作为方法中的参数传递起作用:
public <T extends Activity & IMyInterface> void start(T _callback) {
callback = _callback;
}
但如何正确声明callback
属性?这样:
Class<? extends Activity & IMyInterface> callback;
给出语法错误。
答案 0 :(得分:1)
如果要声明扩展类并实现接口的变量,则必须在类级别声明类型变量,因为基于此doc,您不能在类属性上声明类型变量。
public class MyClass<T extends MyType & MyInterface>{
T extendsBothMyTypeAndInterface;
}
答案 1 :(得分:1)
问题是T不是Class的实例,您可以将其声明为:
Object callback;
MyType callback;
MyInterface callback;
或者您可以将您的类定义为通用,如下所示:
public class Example<T extends MyType & MyInterface>{
T callback
}