更新:我的课程比这还要复杂,我只是停留在ArrayList行上
我有以下课程:
class CatList {
List<Cat> cats = new ArrayList<Cat>();
}
和
class DogList {
List<Dog> dogs = new ArrayList<Dog>();
}
其中Cat和dog都是数据类。
但我想创建一个抽象类:
abstract class AnimalList {
List<???> animals;
AnimalList(Class animal) {
animals = new ArrayList<???>();
}
}
这样我就可以继承我的课程
AnimalList CatList = new AnimalList(Cat);
AnimalList DogList = new AnimalList(Dog);
AnimalList CowList = new AnimalList(Cow);
希望这更有意义。因此,我的问题是什么?位?
最佳答案
使用类型参数可以解决您的问题-对不同类型使用相同的类-无需继承:
public class AnimalList<T> {
private List<T> list = new ArrayList<T>();
public void add(T animal) {
list.add(animal);
}
// more methods
}
现在,您可以参数化人和动物的实例:
AnimalList<Cat> catList = new AnimalList<Cat>();
catList.add(new Cat());
AnimalList<Dog> dogList = new AnimalList<Dog>();
dogList.add(new Dog());
关于java - 摘要列表<人>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11702479/