说我有它填充了不同类型的对象一个ArrayList ...为什么ArrayList.contains(Object.class)不能用于查找实例类型?
ArrayList<Fruit> shelf = new ArrayList<Fruit>();
Apple apple = new Apple();
Orange orange = new Orange();
Pear pear = new Pear();
shelf.add(apple);
shelf.add(orange);
shelf.add(pear);
我想找出是否shelf
包含Orange
对象。我试过
shelf.contains(Orange.class)
但是这不会返回true。我的理解是,contains
使用equals
方法进行对象比较,所以我不确定为什么会出现这种情况。
我意识到我可以简单地遍历ArrayList并单独检查对象的类型,但我很好奇为什么contains
不按我期望的方式工作。
这是我当前如何实施的检查,但我认为使用'contains'可能让我消除循环。我误解了类实例和实际对象之间的区别。感谢澄清。 – voidHead