我正在处理这段代码:
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.class
,Bla.class
,Blub.class
)。List<? extends Foo>
可以包含属于Foo
子类型的对象.
你想要第二个版本。
关于java - 类列表 <?扩展 Foo> 不兼容的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31232999/