sagen, dass ich eine Arraylist haben, die mit Objekten unterschiedlicher Typen bevölkert ...Warum funktioniert ArrayList.contains (Object.class) nicht zum Suchen von Instanztypen?
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);
Ich möchte herausfinden, ob shelf
ein Orange
Objekt enthält. Ich habe versucht
shelf.contains(Orange.class)
, aber das stimmt nicht wahr. Mein Verständnis ist, dass contains
nutzt die equals
Methode für Objektvergleich, so dass ich nicht sicher bin, warum das der Fall ist.
Ich weiß, ich kann einfach durch die ArrayList iterieren und überprüfen Sie die Art der Objekte einzeln, aber ich bin neugierig, warum contains
verhält sich nicht so, wie ich es erwarte.
Dies ist, wie ich zur Zeit die Überprüfung implementiert habe, aber Ich dachte, mit 'contains' könnte ich die Schleife eliminieren. Ich habe den Unterschied zwischen einer Klasseninstanz und dem tatsächlichen Objekt falsch verstanden. Danke fürs klarstellen. – voidHead