自从引入了泛型,Class也被参数化了,因此List.class会产生Class<List>。这是很清楚的。
我无法弄清楚如何获得一个参数化类型的Class实例,即Class<List<String>>。就像在这个片段中:
```java List list = new ArrayList(); Class listClass = list.getClass(); ```
在这个例子中,listClass只是List类的Class对象,而不是参数化的Class对象。
我无法弄清楚如何获得一个参数化类型的Class实例,即Class<List<String>>。就像在这个片段中:
```java List list = new ArrayList(); Class listClass = list.getClass(); ```
在这个例子中,listClass只是List类的Class对象,而不是参数化的Class对象。
public class GenTest {
static <T> T instantiate(Class<T> clazz) throws Exception {
return clazz.newInstance();
}
public static void main(String[] args) throws Exception {
// Is there a way to avoid waring on the line below
// without using @SuppressWarnings("unchecked")?
// ArrayList.class is Class<ArrayList>, but I would like to
// pass in Class<ArrayList<String>>
ArrayList<String> l = GenTest.instantiate(ArrayList.class);
}
}
我经常遇到这个问题的变体,但我仍然不知道是否有更好的方法,或者我是不是漏掉了什么。谢谢您提供建议。