我需要声明一个只接受父类对象而不允许子类对象的列表。
parent class:
public class ParentClass {
private String parentAttr;
public String getParentAttr() {
return parentAttr;
}
public void setParentAttr(String parentAttr) {
this.parentAttr = parentAttr;
}
}
Sub class:
public class SubClass1 extends ParentClass {
private String attr1;
public String getAttr1() {
return attr1;
}
public void setAttr1(String attr1) {
this.attr1 = attr1;
}
}
Main class:
public class MainClass {
public static void main(String[] args) {
ParentClass parentClass=new ParentClass();
SubClass1 subClass1 = new SubClass1();
List<ParentClass> list=new ArrayList<ParentClass>(); // modify this declaration such that it should accept only the parent class objs
list.add(parentClass);
list.add(subClass1); // this should not happen. only parent class objects should be added in the list
}
}
我也尝试过使用泛型。但它不工作。有什么方法可以在 Java 泛型中实现这一点?
最佳答案
您可以实现 List接口(interface)并为 List.add(int index, E element) 提供您自己的实现方法并检查元素是否是父类的实例,而不是您实现中的子类的实例。
您还可以扩展 ArrayList类并覆盖所有将元素添加到 ArrayList 的方法,并检查元素是否是父类的实例而不是您实现中的子类的实例,并调用 Super 方法来处理添加元素的过程。
关于java - 只需要在列表中添加父类对象,限制子类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31781555/