Fri*_*jof 4 java types casting class object
如何将泛型T转换为对象Class<T>?
像Class<T> T.class或Class<T> T.getClass()不起作用的东西,因为T没有变量。
函数应如下所示:
public Class<T> getType() {
return // Class of T
}
Run Code Online (Sandbox Code Playgroud)
背景信息:我有一些类Class1<T>,Class2<T>...这一切extend ParentClass<T>。ParentClass具有功能getType()。我正在寻找一种更优雅的方式来获取类型,然后仅创建变量Class<?> type并以这种方式保存类型。
您T在运行时不知道(因为Type Erase)。
基本上,MyWonderfulClass<String>它将MyWonderfulClass<Object>在运行时运行,因此您没有任何机会检索它,除非您直接在构造函数或setter中提供该类:
//class is a reserved keyword so I call it clazz instead.
public MyClass(Class<T> clazz) {
this.clazz = clazz;
}
public Class<T> getType() {
return this.clazz;
}
Run Code Online (Sandbox Code Playgroud)
您也可以强制子类实施getType() : Class<T>。
| 归档时间: |
|
| 查看次数: |
661 次 |
| 最近记录: |