我有一个String数组,它对应于我的一个包中的Classes名称。
例如,假设我有一个包含三个项目的ArrayList:“A1”,“A2”,“A3”。
我想使用以下代码创建这些类的实例:
Class<?> objectToCreate = (Class<?>) MyStaticClass.class.getClassLoader().loadClass(objectToCreate);
<?> objectCreated = objectToCreate.newInstance();
这样,在循环上面的代码行之后,我会有一个A1类的实例,一个A2类的实例和一个A3类的实例。
有人知道这是否可行?我意识到这是“让我谷歌为你”的领域,但我正在努力想到要查询的名词,这将给我答案!
答案 0 :(得分:1)
您需要?
不是通配符,这意味着它必须在某处定义。您可以选择方法或课程。我希望方法可以工作,所以尝试将其包装在一个方法中,如下所示:
public <T> T create(String name) {
Class<T> objectToCreate = (Class<T>) MyStaticClass.class.getClassLoader().loadClass(objectToCreate);
T objectCreated = objectToCreate.newInstance();
return objectCreated;
}
答案 1 :(得分:1)
您可以使用
简单地获取课程Class<?> clazz = Class.forName(classname);
如果您的类提供了公共的无参数构造函数,您当然可以使用newInstance()
。或者,您可以获取所有可用的构造函数并使用适当的参数调用ctor。