gpt4 book ai didi

java - 只需要在列表中添加父类对象,限制子类对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:58:12 32 4
gpt4 key购买 nike

我需要声明一个只接受父类对象而不允许子类对象的列表。

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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com