J'ai une interface générique
public interface Consumer<E> {
public void consume(E e);
}
J'ai une classe qui consomme deux types d'objets, donc je voudrais faire quelque chose comme:
public class TwoTypesConsumer implements Consumer<Tomato>, Consumer<Apple>
{
public void consume(Tomato t) { ..... }
public void consume(Apple a) { ...... }
}
Apparemment, je ne peux pas faire.
Je peux bien sûr mettre en œuvre l'expédition de moi-même, par exemple
public class TwoTypesConsumer implements Consumer<Object> {
public void consume(Object o) {
if (o instanceof Tomato) { ..... }
else if (o instanceof Apple) { ..... }
else { throw new IllegalArgumentException(...) }
}
}
Mais je suis à la recherche pour le type de compilation-la vérification et de la solution de répartition que les génériques fournir.
La meilleure solution je pense est de définir des interfaces distinctes, par exemple
public interface AppleConsumer {
public void consume(Apple a);
}
Fonctionnellement, cette solution est OK, je pense. C'est juste détaillé et le laid.
Des idées?