У меня есть Список объектов, расширяющих другой класс:
List<? extends Fruit> arguments;
Теперь я хочу вызвать метод для этих объектов. В вызывающем классе есть метод wash
для каждого из классов, расширяющих Fruit
, но НЕ для абстрактного класса Fruit
:
void wash( Apple a);
void wash( Peach p);
Как я могу применить очистка метода для всех элементов в аргументах
? Это НЕ РАБОТАЕТ, поскольку мои методы стирки не принимают аргументы Fruit
:
for( Fruit f: arguments)
this.wash( f); // the wash() method is not a member of Fruit
Есть ли способ решить эту проблему без создания зонтичного метода мыть (Fruit)
? Потому что существуют десятки wash (? Extends Fruit)
методов ...
.
EDIT : "вызывающий класс", о котором я говорю, - это посетитель. И я могу' t изменить любой из классов / подклассов Fruit
. Я могу программировать только посетителя. Это означает, что невозможно добавить метод wash ()
(или любые другие методы, если на то пошло) в абстрактный класс Fruit
.