gpt4 book ai didi

java - 如何返回泛型类型的类

转载 作者:搜寻专家 更新时间:2023-11-01 01:39:43 25 4
gpt4 key购买 nike

我有这个编译问题:

enter image description here

这里是有问题的类:

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();
}

我得到:

enter image description here

然后我尝试了这个:

  public Class<? extends T> getEntityType (){
return this.model.getClass();
}

我有:

enter image description here

最佳答案

你看起来很困惑。您返回的是代表 T 的类,而不是 T。

让我们用 String 替换 T 并说明为什么您所做的没有意义:

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();
}

是的,?扩展 T,因为模型是 T 或 T 的任何子类型。

关于java - 如何返回泛型类型的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54395510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com