java - 返回具有泛型类类型的对象类型

标签 java generics

下面的代码包含一个获取类 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/

相关文章:

.net - ADO.NET 疯狂和可空类型

java - 重写方法中的泛型

java - 无法创建通用数组

java - 更改哪个文件夹是远程 github 存储库的 master 分支

java - 将条件 spring mvc 参数传递给 javascript url 函数

动态扩展线程数的 Java ExecutorService

c# - 获取部分开放泛型类型的类型表示

java - 使弹出窗口在强制退出 JavaFX 之前出现

java - 无法在 libjvm.dylib (Mac OS) 中找到方法 JNI_GetCreatedJavaVMs

c# - 创建计算数字 T 平均值的通用类