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
}
}
添加回答
舉報