Как перебирать этот общий список с помощью подстановочных знаков?

У меня есть Список объектов, расширяющих другой класс:

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 .

10
задан John Assymptoth 12 December 2010 в 08:17
поделиться