gpt4 book ai didi

Java 泛型 - 类型不匹配错误

转载 作者:行者123 更新时间:2023-11-30 09:05:51 25 4
gpt4 key购买 nike

我有一个定义如下的类:

public class MultiFacilitySearchDataProvider <T extends Facility & MilepostValue & Copyable<T>> 

这个类有这个方法:

 protected T getFacility(final FacilityInstance instance) { 
final MultiFacilitySearchDAO dao = new MultiFacilitySearchDAO(instance);
ENM.execute(dao);
return dao.getResultModel(); // Compile error here
}

上面调用的 DAO 方法如下所示:

 public MultiFacilitySearchModel getResultModel() { 
return resultModel;
}

而MultiFacilitySearchModel定义如下:

public class MultiFacilitySearchModel implements Copyable<MultiFacilitySearchModel>, Facility, 
Serializable, MilepostValue, MenuDisplayValues

问题在于返回 dao.getResultModel() 行生成编译错误“类型不匹配:无法从 MultiFacilitySearchModel 转换为 T”。我不明白为什么会出现此错误,因为 MultiFacilitySearchModel 实现了为通用类型 T 指定的三个接口(interface)。我缺少什么?

最佳答案

您可以将满足先决条件的任何类指定为类型参数。因此 T 不必是 MultiFacilitySearchModel 的父类(super class)型。然而,这意味着

return dao.getResultModel()

不能返回扩展 T 类型的对象。 Java 不允许您这样做。

关于Java 泛型 - 类型不匹配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24702347/

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