我有一个Animal.Class和Dog类扩展了Animal.Class

我可以知道是否有快速简便的方法吗?

List<Dog> dogList = getAnimalList();

public List<Animal> getAnimalList(){
     List<Animal> animalList = new LinkedList<Animal>();
     return animalList;
}

除非绝对必要,否则我不想再查看整个动物清单。

狗类仅包含一个额外的布尔值,用于其他检查目的。

最佳答案

Generics inheritance与Java继承原理没有什么不同。您需要使用?(通配符)

List<? extends Animal> dogList = getAnimalList();

编辑:

Wildcard Guidelines:
  • 使用extends关键字,使用上限通配符定义“in”变量。
  • 使用super关键字使用下界通配符定义“输出”变量。
  • 如果可以使用Object类中定义的方法访问“in”变量,请使用无界通配符。
  • 如果代码需要同时使用“in”和“out”变量来访问变量,请不要使用通配符。
  • 10-06 13:40