Wie erstelle ich eine Java-Klasse, die eine Schnittstelle mit zwei generischen Typen implementiert?

Ich habe eine generische Schnittstelle

public interface Consumer<E> {
    public void consume(E e);
}

Ich habe eine Klasse, die zwei Arten von Objekten verwendet, daher möchte ich Folgendes tun:

public class TwoTypesConsumer implements Consumer<Tomato>, Consumer<Apple>
{
   public void consume(Tomato t) {  .....  }
   public void consume(Apple a) { ...... }
}

Anscheinend kann ich das nicht.

Ich kann den Versand natürlich selbst durchführen, z.

public class TwoTypesConsumer implements Consumer<Object> {
   public void consume(Object o) {
      if (o instanceof Tomato) { ..... }
      else if (o instanceof Apple) { ..... }
      else { throw new IllegalArgumentException(...) }
   }
}

Ich bin jedoch auf der Suche nach der kompilierten Lösung zur Typprüfung und zum Versenden von Daten, die von Generika bereitgestellt wird.

Die beste Lösung, die ich mir vorstellen kann, besteht darin, separate Schnittstellen zu definieren, z.

public interface AppleConsumer {
   public void consume(Apple a);
}

Funktionell ist diese Lösung OK, denke ich. Es ist nur wortreich und hässlich.

Irgendwelche Ideen?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage