为什么List <subclass>与List <t extends =“”superclass =“”>不兼容?</t> </subclass>

时间:2011-04-18 03:09:54

标签: java list generics

interface Receiver {
    public <T extends HasId> void doSomethingWithList(List<T> list);
}

class SubClass implements HasId {}

List<SubClass> list = getList();
receiver.doSomethingWithList(list);

无法编译,抱怨doSomethingWithList不适用于参数List<SubClass>

我的错误在哪里?

3 个答案:

答案 0 :(得分:3)

对我来说很好看。可能是你在其中一个声明中使用了错误的List类(即不是java.util.class而是java.awt.List)。也许在界面中。你能仔细检查一下进口报表吗?我过去自己犯过这个错误,这个案子是有效的: - )

答案 1 :(得分:3)

代码编译没有任何问题。

答案 2 :(得分:0)

与无可争议的一样,我的代码快速实现编译并运行得很好。也许this可以给你一些线索;也许这个问题更多地与你对Java支持泛型多态的实现有关。

您似乎使用的是界面而不是类继承,但您的问题标题是List<T extends SuperClass> ...