我想定义一个类列表并稍后实例化它们。我有这样的清单
List<Class> classList = new ArrayList<>();
classList.add(ClassA.class);
classList.add(ClassB.class);
我想从这个列表中读取并创建类。我不知道我必须创建的女巫课程,因为我的图书馆的客户将定义这个列表。我所知道的是所有这些类都从同一个类扩展而且有一个对象作为构造函数参数。
知道我应该怎么做到这一点?
答案 0 :(得分:2)
如果你所讨论的所有类的构造函数接受一个参数,并且该参数的类型相同(让我们说它是String
),你可以实例化这样一个类以下内容:
Object instance = clazz.getConstructor(String.class).newInstance("string value you pass to the constructor");
此外,如果您的所有课程都扩展了课程Super
,那么编写Class<? extends Super>
而不是原始Class
会更好。然后你可以写
Super instance = clazz.getConstructor(String.class).newInstance("string value you pass to the constructor");