如何使用反射在 Java 中创建通用参数化类?
我有
public class SomeClass<T> {
public SomeClass<T>() {
}
}
我需要它的一个实例。
我试过各种变体
Class c = Class.forName("SomeClass");
但找不到允许我获得适当类型实例的语法,例如
SomeType instance = (SomeType)Class.forName("SomeClass<SomeType>").createInstance();
那么,我该怎么做呢?
最佳答案
Java 使用基于删除的泛型(即,类型参数在运行时被删除——例如,List<Integer>
和 List<String>
在运行时被视为相同类型)。由于反射本质上是一种运行时功能,因此根本不使用或不涉及类型参数。
换句话说,当您使用反射时,您只能实例化原始类型( SomeClass
,而不是 SomeClass<T>
)。然后,您必须手动将类型转换为通用版本(并生成 unchecked
警告)。
关于java - Java使用反射创建泛型参数化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6373800/