3 回答
TA贡献1804条经验 获得超7个赞
你似乎很困惑。您将返回代表 T 的类,而不是 T。
让我们将 T 替换为 String 并说明为什么您正在做的事情没有意义:
private String model;
public String getEntityType() {
return model.getClass();
// Of course this does not work; model.getClass() is not a string!
}
public String getEntityType() {
return String;
// This doesn't even compile.
}
为了解释,这个:
public T getEntityType() {
....
}
要求您返回任何 T 的实际实例。不是 T 代表的任何类型。就像'String'意味着你应该返回一个实际的String实例,而不是String的概念,类型。
也许你打算这样做:
public T getEntityType() {
return model;
}
或者更有可能,鉴于您将此方法命名为“getEntityType”,您的意思是:
public Class<? extends T> getEntityType() {
return model.getClass();
}
是的? extends T,因为模型是 T 或 T 的任何子类型。
TA贡献1111条经验 获得超0个赞
下面的代码呢。我认为它有效。
public Class<? extends BaseModel> getEntityType (){
return model.getClass();
}
TA贡献1856条经验 获得超17个赞
class Foo<T> {
final Class<T> typeParameterClass;
public Foo(Class<T> typeParameterClass) {
this.typeParameterClass = typeParameterClass;
}
public void bar() {
// you can access the typeParameterClass here and do whatever you like
}
}
添加回答
举报