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