声明一个既扩展类又实现接口的属性

时间:2014-05-02 12:12:23

标签: java

我发现了这个问题: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;

给出语法错误。

2 个答案:

答案 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
}