Java:如何限制在集合中添加子类?

时间:2015-06-24 12:12:39

标签: java

任何人都可以告诉我以下问题的解决方案: 我有一个名为A的超类,以及几个名为B,C的子类。两个子类B和C都扩展了A. 我想在集合中添加超类对象(如arraylist)而不是子类对象。 我的意思是该集合应该只允许超类对象而不是子类对象。

3 个答案:

答案 0 :(得分:1)

静态输入不能这样做。

如果你真的需要这样做,你需要编写一个使用

的集合类
  element.getClass().equals(someClass)

测试(候选)元素是否满足您的限制。

答案 1 :(得分:0)

java.util实施的收藏无法做到这一点。您需要编写自己的集合来检查元素的类并选择是否添加它。您仍然可以实现List<E>

但它看起来更像是你使用类继承方式的设计问题,就像那些类B,C不应该扩展A一样。

答案 2 :(得分:-1)

您应该使用Generic的Lower Bounded Wildcards来限制它。

例如:

List<E super A> aList = new ArrayList<>();

现在,aList只能接受超级A(当然,包括班级A)。

查看详情: https://docs.oracle.com/javase/tutorial/java/generics/lowerBounded.html