Dire che ho un ArrayList che è popolato da oggetti di tipo diverso ...Perché ArrayList.contains (Object.class) non funziona per trovare i tipi di istanze?
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);
Voglio scoprire se shelf
contiene un oggetto Orange
. Ho provato
shelf.contains(Orange.class)
ma questo non restituisce vero. La mia comprensione è che contains
utilizza il metodo equals
per il confronto degli oggetti, quindi non sono sicuro del motivo per cui questo è il caso.
Mi rendo conto che posso semplicemente scorrere l'ArrayList e controllare il tipo di oggetti singolarmente, ma sono curioso di sapere perché contains
non si comporta come mi aspetto.
Questo è il modo che ho attualmente implementato il controllo, ma Pensavo che usare 'contains' mi avrebbe permesso di eliminare il loop. Ho frainteso la differenza tra un'istanza di classe e l'oggetto reale. Grazie per il chiarimento. – voidHead