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

List of Class<? extends Foo> incompatible types

我正在处理这段代码:

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 works, but your list wants Class 对象就是这样。

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

  • List<? extends Foo> 可以包含属于 Foo.

  • 子类型的对象

你想要第二个版本。