Java从类构造通用实例

时间:2014-10-29 03:18:34

标签: java generics reflection

我正在尝试使用类型参数构造泛型类的实例。例如,如果有ArrayList.class并且我想用类String.class初始化它,我该怎么做?我知道我可以使用ArrayList.class.newInstance()来创建一个新实例,但是我无法传入一个类型参数。我想做new ArrayList<String>,但不是针对该特定示例,而是任何具有类型参数的类。

具体来说,我正在尝试implement testing of different implementations of an interface,通过JUnit测试的子类化。

1 个答案:

答案 0 :(得分:0)

我意识到只能返回泛型类的初始化,而不使用类型的参数,只需将其转换为该参数即可。

例如:

private Class<? extends List> implementation = ArrayList.class;

private <E> List<E> newList(Class<E> itemClass) {
    try {
        return (List)implementation.newInstance();
    } catch (Throwable x) {
       return null;
    }
}

@Test
public void test1() {
    List<String> testInstance = newList(String.class);
    testInstance.add('hey');
    assertEquals(3, testInstance.get(0).lenght());
}