Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将实现接口的类添加到ArrayList_Java_Android_Arraylist_Polymorphism - Fatal编程技术网

Java 如何将实现接口的类添加到ArrayList

Java 如何将实现接口的类添加到ArrayList,java,android,arraylist,polymorphism,Java,Android,Arraylist,Polymorphism,为了解决必须实现接口中所有方法的问题,我创建了一个实现接口的抽象类,然后让其他类扩展该抽象类并只覆盖所需的方法 我正在为我的应用程序构建一个API/框架。 class MyClass extends AbstractIMyInterface {} class AbstractIMyInterface implements IMyInterface {} 我想将作为接口实例的类添加到数组列表中: ArrayList<Class<IMyInterface>> cl

为了解决必须实现接口中所有方法的问题,我创建了一个实现接口的抽象类,然后让其他类扩展该抽象类并只覆盖所需的方法

我正在为我的应用程序构建一个API/框架。

class MyClass extends AbstractIMyInterface {}  
class AbstractIMyInterface implements IMyInterface {}  
我想将作为接口实例的类添加到
数组列表中:

ArrayList<Class<IMyInterface>> classes = new ArrayList<>();  
classes.add(MyClass.class);  
这里是抽象接口

class MyClass extends AbstractIMyInterface {}  
class AbstractIMyInterface implements IMyInterface {}  
到目前为止,这似乎是不可能的。我的上述方法行不通:

add(java.lang.Class)
in-ArrayList不能应用于
(java.lang.Class)


如何实现这一点,即:添加一个类,将另一个类扩展到
数组列表
您需要使用通配符
?扩展imy接口

ArrayList<Class<? extends IMyInterface>> classes = new ArrayList<>();

ArrayList您可以使用
进行此操作

List<Class <? extends IMyInterface>> arrayList = new ArrayList<>();

List我可以用这种方式添加,希望对大家有所帮助

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

    }
}
公共类MyClass扩展了AbstractIMyInterface{
@凌驾
公开作废{
//从接口
}
@凌驾
void onRunning(){
//抽象地
}
公共静态void main(字符串[]args){
ArrayList iMyInterfaces=新的ArrayList();
MyClass MyClass=新的MyClass();
添加(myClass);
}
}

看起来您正在尝试添加一个类的对象,该类不是
IMyInterface的对象
感谢您的响应。什么是正确的方法@Prashant?我刚刚接受了你的答案@ramanlfc。然而,我正在努力迭代
ArrayList