luv*_*ere 8 java generics reflection parameterized
如何使用反射在Java中创建通用参数化类?
我有
public class SomeClass<T> {
public SomeClass<T>() {
}
}
Run Code Online (Sandbox Code Playgroud)
我需要一个它的实例.
我尝试过变种
Class c = Class.forName("SomeClass");
Run Code Online (Sandbox Code Playgroud)
但是找不到允许我获得适当类型实例的语法,比如说
SomeType instance = (SomeType)Class.forName("SomeClass<SomeType>").createInstance();
Run Code Online (Sandbox Code Playgroud)
那么,我该怎么做呢?
Java使用基于擦除的仿制药(即,类型参数是在运行时,例如擦除,List<Integer>并且List<String>被视为在运行时是同一类型).由于反射本质上是运行时特征,因此根本不使用或不涉及类型参数.
换句话说,您只能在使用反射时实例化原始类型(SomeClass而不是SomeClass<T>).然后,您必须手动将类型转换为通用版本(并生成unchecked警告).
| 归档时间: |
|
| 查看次数: |
7839 次 |
| 最近记录: |