摘要列表<Person>

Fri*_*ave 0 java android abstract-class arraylist

更新:我的类比这更复杂,我只是停留在ArrayList行

我有以下课程:

class CatList {

    List<Cat> cats = new ArrayList<Cat>();

}
Run Code Online (Sandbox Code Playgroud)

class DogList {

    List<Dog> dogs = new ArrayList<Dog>();

}
Run Code Online (Sandbox Code Playgroud)

猫和狗都是数据类.

但我想创建一个抽象类:

abstract class AnimalList {

    List<???> animals;

    AnimalList(Class animal) {

        animals = new ArrayList<???>();

    }
}
Run Code Online (Sandbox Code Playgroud)

这样我就可以继承我的课程

AnimalList CatList = new AnimalList(Cat);
AnimalList DogList = new AnimalList(Dog);
AnimalList CowList = new AnimalList(Cow);
Run Code Online (Sandbox Code Playgroud)

希望这更有意义.我的问题是什么?位?

And*_*s_D 5

使用类型参数可以解决您的问题 - 对不同类型使用相同的类 - 无需继承:

public class AnimalList<T> {
  private List<T> list = new ArrayList<T>();

  public void add(T animal) {
    list.add(animal);
  }
  // more methods
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以参数化人和动物的实例:

AnimalList<Cat> catList = new AnimalList<Cat>();
catList.add(new Cat());
AnimalList<Dog> dogList = new AnimalList<Dog>();
dogList.add(new Dog());
Run Code Online (Sandbox Code Playgroud)