說我有它填充了不同類型的對象一個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