java - 如何使用 ArrayList<Class> 中的成员创建实例

标签 java

我创建了一个 ArrayList 来存储类。然后我想使用ArrayList中的成员来创建一个实例。我如何实例化?

import java.util.ArrayList;

class Machine{
    public String toString(){
        return "I am a machine";
    }
}

class MyMachine extends Machine{
    public String toString(){
        return "This is a super Machine";
    }
}


class MyClass<T> {
    public static <T> void showString(T abc){
        System.out.println(abc);
    }
}

public class myfun {
    public static void main(String[] args) {
        ArrayList<Class> hahalist = new ArrayList<>();

        hahalist.add(MyClass.class);
        hahalist.add(Machine.class);
        hahalist.add(MyClass.class);

        // Machine abc = new Machine();
        // I can't do this
        // abc = hahalist.get(1);

        // I can't do this either
        // hahalist.get(1) abc = new hahalist.get(1)()
    }
}

最佳答案

您可以存储对构造函数的引用,而不是将类存储在列表中:

List<Supplier<Object>> hahalist = new ArrayList<>();

hahalist.add(MyClass::new);
hahalist.add(Machine::new);
hahalist.add(MyMachine::new);

Object instance = hahalist.get(1).get(); // Calling constructor

因为 MyClassMachine 具有 Object 最接近的共同祖先,它是我在这里使用的 Supplier 的返回类型。

关于java - 如何使用 ArrayList<Class> 中的成员创建实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38415951/

相关文章:

java - 将代码从 Java 1.4 迁移到 Java 1.6 时找不到提供程序 org.apache.crimson.jaxp.SAXParserFactoryImpl

Java - JTable - getSelectedRow() 中的数据错误

java - 将 N 字节转换为由 Q 数定义的浮点型

Java 8 多重映射

java - JADE代理数据通信

java - Jersey 和 JSONArray : Java class org. json.JSONArray 和 Java 类型类 org.json.JSONArray 和 MIME 媒体类型 application/json 未找到

java - 存档中的部署描述 rune 件 WEB-INF/web.xml 中的部署描述符无效

java - 扩展谷歌库方法的最佳方式

java - 添加多选JList的值

java - 如何更新 Netbeans 项目 View ?