创建类<! - ? - >对象,其中<! - ? - >被定义为ArrayList中的字符串<string> - Java </string>

时间:2011-06-24 14:46:49

标签: java generics classloader

我有一个String数组,它对应于我的一个包中的Classes名称。

例如,假设我有一个包含三个项目的ArrayList:“A1”,“A2”,“A3”。

我想使用以下代码创建这些类的实例:

    Class<?> objectToCreate = (Class<?>) MyStaticClass.class.getClassLoader().loadClass(objectToCreate);
    <?> objectCreated = objectToCreate.newInstance();

这样,在循环上面的代码行之后,我会有一个A1类的实例,一个A2类的实例和一个A3类的实例。

有人知道这是否可行?我意识到这是“让我谷歌为你”的领域,但我正在努力想到要查询的名词,这将给我答案!

2 个答案:

答案 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。