【发布时间】:2013-10-17 00:47:35
【问题描述】:
我正在尝试覆盖在子类中返回类型为列表的方法,如下例所示,由于泛型问题,我无法在我的子类中执行此操作。我无法更改我的超类代码,那么我该如何解决这个问题?任何人都可以请指导我...非常感谢提前。
不能更新的超类:
public class Animal {
private String legs;
}
public class TestSuper {
public List<Animal> addAnimals() {
return animals;
}
}
子类:
public class Dog extends Animal {
private String sound;
}
public class TestSub extends TestSuper {
public List<Dog> addAnimals() { --> I need to override this method but want return type as List of dogs
return null;
}
}
【问题讨论】:
-
你只能用赋值兼容的类型覆盖返回类型。但是,泛型不是协变的。
List<Dog>不是List<Animal>的子类型。见this thread。