This question already has answers here:
Get generic type of class at runtime
(25个答案)
3年前关闭。
我有一个抽象类:
许多类都对其进行了扩展,例如:
我的问题是如何找到T类?
我需要编写一个静态函数:
如果valueClass = DmText.class,则getT函数应返回String.class
如果valueClass = DmBoolean.class,则getT函数应返回Boolean.class
有什么建议么?
然后在您的子类中对其进行初始化,例如
然后,您可以通过调用
(25个答案)
3年前关闭。
我有一个抽象类:
abstract class DmValue<T>
许多类都对其进行了扩展,例如:
class DmBoolean extends DmValue<Boolean>
class DmText extends DmValue<String>
class DmDate extends DmValue<Date>
我的问题是如何找到T类?
我需要编写一个静态函数:
static Class getT(Class<? extends DmValue> valueClass){...}
如果valueClass = DmText.class,则getT函数应返回String.class
如果valueClass = DmBoolean.class,则getT函数应返回Boolean.class
有什么建议么?
最佳答案
在构造函数中传递Class<T>
abstract class DmValue<T> {
Class<T> cls;
public DmValue(Class<T> cls) {
this.cls = cls;
}
public Class<T> getValueType() {
return this.cls;
}
}
然后在您的子类中对其进行初始化,例如
class DmBoolean extends DmValue<Boolean> {
public DmBoolean() {
super(Boolean.class);
}
}
然后,您可以通过调用
getValueType()
来访问它。