班级列表<! - ?扩展Foo - >不兼容的类型

时间:2015-07-05 17:20:53

标签: 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应该如何工作......

1 个答案:

答案 0 :(得分:3)

你是对的。这就是? extends的工作原理,但您的列表需要Class个对象。

  • List<Class<? extends Foo>>可以包含代表ClassFooFoo.classBla.class的子类型的Blub.class个对象。

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

你想要第二个版本。