将泛型T转换为Class <T>

Fri*_*jof 4 java types casting class object

如何将泛型T转换为对象Class<T>

Class<T> T.classClass<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并以这种方式保存类型。

Arn*_*lle 5

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>