Скажем, у меня есть 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