亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何返回泛型類型的類

如何返回泛型類型的類

jeck貓 2022-05-25 10:54:31
我有這個編譯問題:這是有問題的課程:package huru.entity;import io.vertx.core.json.JsonObject;import java.util.Date;public class BaseEntity <T extends BaseModel> extends JsonObject {  private T model;  public BaseEntity(T m){    this.model = m;  }  public void setUpdateInfo(String user){    this.model.updatedBy = user;    this.model.updatedAt = new Date();  }  public JsonObject toJsonObject(){    return JsonObject.mapFrom(this.model);  }  public T getEntityType (){    return this.model.getClass();  // doesn't compile  }}我也嘗試過使用 public T getEntityType (){    return T;  // doesn't compile }但這顯然也不起作用。有人知道我如何返回該泛型類型的類實例嗎?我也試過這個:  public Class<T> getEntityType (){    return this.model.getClass();  }我得到:然后我嘗試了這個:  public Class<? extends T> getEntityType (){    return this.model.getClass();  }我有:
查看完整描述

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 的任何子類型。


查看完整回答
反對 回復 2022-05-25
?
catspeake

TA貢獻1111條經驗 獲得超0個贊

下面的代碼呢。我認為它有效。


 public Class<? extends BaseModel> getEntityType (){

    return model.getClass();  

 }


查看完整回答
反對 回復 2022-05-25
?
慕慕森

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

 }


}


查看完整回答
反對 回復 2022-05-25
  • 3 回答
  • 0 關注
  • 225 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號