我创建了一个 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
因为 MyClass
和 Machine
具有 Object
最接近的共同祖先,它是我在这里使用的 Supplier
的返回类型。
关于java - 如何使用 ArrayList<Class> 中的成员创建实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38415951/