Rozważmy następujący przykład:Nie może zawierać tego samego interfejsu o różnych parametrach?
public class Sandbox {
public interface Listener<T extends JComponent> {
public void onEvent(T event);
}
public interface AnotherInterface extends Listener<JPanel>, Listener<JLabel> {
}
}
to się nie powiedzie z powodu następującego błędu
/media/PQ-WDFILES/programming/Sandbox/src/Sandbox.java:20: Sandbox.Listener cannot be inherited with different arguments: <javax.swing.JPanel> and <javax.swing.JLabel>
public interface AnotherInterface extends Listener<JPanel>, Listener<JLabel> {
^
1 error
Dlaczego mimo? W generowanych metodach nie ma nakładania się. W rzeczywistości oznacza to w istocie, że nie ma tam nakładania się. Dlaczego to się nie udaje?
W przypadku, gdy zastanawiasz się, co robię i mam lepsze rozwiązanie: Mam kilka zdarzeń i interfejs Listener, który jest prawie dokładnie tak, jak w klasie Listener
powyżej. Chcę utworzyć adapter i interfejs adaptera, a do tego potrzebuję rozszerzyć wszystkie interfejsy Listener o określone zdarzenie. czy to możliwe? Czy jest lepszy sposób to zrobić?
Ach, zapomniałem o wymazaniu czcionki. Czy znasz alternatywny sposób osiągnięcia tego, co chcę zrobić? – TheLQ
@TheLQ, zaktualizowany. –
@Stas Wydaje się to toną kodu na zdarzenie (~ 50). Być może powinienem wrócić do wyraźnego tworzenia słuchaczy na wydarzenie? – TheLQ