У меня есть общий интерфейс
public interface Consumer<E> {
public void consume(E e);
}
У меня есть класс, который потребляет два типа объектов, поэтому я хотел бы сделать что-то вроде:
public class TwoTypesConsumer implements Consumer<Tomato>, Consumer<Apple>
{
public void consume(Tomato t) { ..... }
public void consume(Apple a) { ...... }
}
По-видимому, я не могу этого сделать.
Я могу, конечно, сам осуществить отправку, например
public class TwoTypesConsumer implements Consumer<Object> {
public void consume(Object o) {
if (o instanceof Tomato) { ..... }
else if (o instanceof Apple) { ..... }
else { throw new IllegalArgumentException(...) }
}
}
Но я ищу решение для проверки и диспетчеризации времени компиляции, которое предоставляют дженерики.
Лучшее решение, о котором я могу думать, это определить отдельные интерфейсы, например
public interface AppleConsumer {
public void consume(Apple a);
}
Функционально это решение в порядке, я думаю. Это просто многословный и уродливый.
Любые идеи?