java - 类列表 <?扩展 Foo> 不兼容的类型

标签 java generics incompatibletypeerror

我正在处理这段代码:

List<Class<? extends Foo>> models = new ArrayList<>();
    if (bar == 0)
        models = getRandomBlas(); // returns List<Bla>
    else 
        models = getRandomBlubs(); // returns List<Blub>

与:

public class Bla extends Foo { ... }
public class Blub extneds Foo { ... }

但我得到一个 Incompatible types: Found: 'java.util.List<Bla>', required: 'java.util.List<java.lang.Class<? extends Foo>'

有没有人有想法?据我所知,这就是 ? extends 的方式应该工作...

最佳答案

你是对的。就是这样 ? extends 有效,但您的列表需要 Class 对象。

  • List<Class<? extends Foo>>可以包含 Class表示 Foo 子类型的对象(Foo.classBla.classBlub.class)。

  • List<? extends Foo>可以包含属于 Foo 子类型的对象.

你想要第二个版本。

关于java - 类列表 <?扩展 Foo> 不兼容的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31232999/

相关文章:

java - java泛型类型不兼容问题

java - 如果正在读取的文件格式不正确,请关闭程序吗?

c# - 类型 'TNestedInterface' 必须可转换为 'INestedInterfaceTest' 才能将其用作参数 'TNestedInterface'

java - 使用泛型类执行基本算术运算

java - 尝试将数据输入数组时不兼容的类型

java - 无法将 double 转换为 double [] 错误

java - 为 swingworker 添加超时功能

java - 如何在 Eclipse 编辑器中实现 ' Search Google for "Text"' 之类的功能

java - 使用 Jackson CsvMapper 序列化 POJO 时省略字段

c# - 获取实现特定开放通用类型的所有类型