下面的代码包含一个获取类 T 的一组对象的方法:
public class Cube <T extends State> {
private Set<T> states = new HashSet<>();
public Set<T> getStates() {
return states;
}
}
在我看来,这是返回一组状态的有效方法。但是,它返回一组对象。尝试使用:
Cube<DestinationState> cube = new Cube<>();
Set<DestinationState> set = cube.getStates();
在第二行产生编译错误:
Error:(187, 61) java: incompatible types: java.lang.Object cannot be converted to nl.gijspeters.pubint.graph.state.DestinationState
State 是具有多个实现类(其中包括 DestinationState)和子接口(interface)的通用接口(interface)。
这很可能是一个重复的问题(因为它看起来很基本),但是,我找不到答案。
最佳答案
默认 T
替换为 Object
所以这是基于目标的类型推断所以试试这个
Set<DestinationState> set = cube<DestinationState>.getStates();
关于java - 返回具有泛型类类型的对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40718729/