为了在接口中实现所有方法,我创建了一个实现接口的抽象类,然后让其他类扩展抽象类并仅覆盖所需的方法。
我正在为我的应用构建API /框架。
我想将一个接口 IMyInterface
的实例添加到ArrayList
:
ArrayList<Class<IMyInterface>> classes = new ArrayList<>();
classes.add(MyClass.class);
这是 MyClass
class MyClass extends AbstractIMyInterface {}
这是 AbstractIMyInterface
class AbstractIMyInterface implements IMyInterface {}
到目前为止,这似乎是不可能的。我上面的方法不起作用:
add (java.lang.Class<com.app.IMyInterface>)
in ArrayList cannot be applied to
(java.lang.Class<com.myapp.plugin.plugin_a.MyClass>)
如何使这项工作,即:添加一个将另一个类扩展为 ArrayList
答案 0 :(得分:4)
您需要使用通配符? extends IMyInterface
。
ArrayList<Class<? extends IMyInterface>> classes = new ArrayList<>();
在ArrayList<Class<IMyInterface>> classes
中,您只能添加Class<IMyInterface>
。
答案 1 :(得分:2)
您可以使用?
。
List<Class <? extends IMyInterface>> arrayList = new ArrayList<>();
答案 2 :(得分:1)
我可以添加这种方式,希望这是有帮助的
public class MyClass extends AbstractIMyInterface {
@Override
public void onEating() {
//from interface
}
@Override
void onRunning() {
//from abstract
}
public static void main(String[] args){
ArrayList<IMyInterface> iMyInterfaces = new ArrayList<>();
MyClass myClass = new MyClass();
iMyInterfaces.add(myClass);
}
}