Pourquoi ne pas ArrayList.contient(Object.class) de travail pour trouver les types d'instances?

Dire que j'ai une liste de tableaux qui est rempli avec des objets de différents types...

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);

Je veux savoir si shelf contient un Orange objet. J'ai essayé

shelf.contains(Orange.class)

mais cela ne veut pas retourner la valeur true. Ma compréhension est que contains fait usage de la equals méthode pour objet de comparaison, donc je ne sais pas pourquoi c'est le cas.

Je me rends compte que je peux simplement parcourir la liste de tableaux et de vérifier le type des objets individuellement, mais je suis curieux de savoir pourquoi contains ne se comportent pas de la manière que je l'attendez.

OriginalL'auteur voidHead | 2013-05-22