¿Cómo hacer una clase Java que implemente una interfaz con dos tipos genéricos?
Tengo una interfaz genérica
public interface Consumer<E> {
public void consume(E e);
}
Tengo una clase que consume dos tipos de objetos, por lo que me gustaría hacer algo como:
public class TwoTypesConsumer implements Consumer<Tomato>, Consumer<Apple>
{
public void consume(Tomato t) { ..... }
public void consume(Apple a) { ...... }
}
Aparentemente no puedo hacer eso.
Por supuesto, puedo implementar el envío yo mismo, por ejemplo.
public class TwoTypesConsumer implements Consumer<Object> {
public void consume(Object o) {
if (o instanceof Tomato) { ..... }
else if (o instanceof Apple) { ..... }
else { throw new IllegalArgumentException(...) }
}
}
Pero estoy buscando la solución de envío y verificación de tipos en tiempo de compilación que brindan los genéricos.
La mejor solución que se me ocurre es definir interfaces separadas, por ejemplo,
public interface AppleConsumer {
public void consume(Apple a);
}
Funcionalmente, esta solución está bien, creo. Es solo verboso y feo.
¿Algunas ideas?