Ich habe eine Java-Generika-Frage, die ich gehofft hatte, dass jemand antworten könnte. Betrachten Sie den folgenden Code ein:Generische Schnittstelle in Java implementieren
public class AddressHandler implements Handles<AddressChanged>, Handles<AddressDiscarded>{
public void handle(AddressChanged e){}
public void handle(AddressDiscarded e){}
}
Aber Java erlaubt keine Griffe zweimal mit dem generischen Umsetzung:
public interface Event{}
public class AddressChanged implements Event{}
public class AddressDiscarded implements Event{}
public interface Handles<T extends Event>{
public void handle(T event);
}
ich diese Griffe Schnittstelle so implementieren möchten. Ich konnte dies mit C# erreichen, aber ich kann keine Workaround in Java finden, ohne Reflection oder instanceof und casting zu verwenden.
Gibt es eine Möglichkeit in Java, die Handles-Schnittstelle mit beiden generischen Schnittstellen zu implementieren? Oder vielleicht eine andere Möglichkeit, die Handles-Schnittstelle zu schreiben, damit das Endergebnis erreicht werden kann?
Diese diskutierbar ist ... Diese "instanceof Kaskade" ist ein sehr verfahrens paragidm. Natürlich funktioniert es, aber IMHO ist es nicht sehr guter Stil. Aber auch unterschiedliche Methodennamen sind vielleicht nicht perfekt, es ist wahrscheinlich Geschmackssache. –
Das würde ich tun. Sie müssen nicht :) –
-1: Sie können mehrere Schnittstellen in Java implementieren. –