다음 예제를 고려하십시오.매개 변수가 다른 동일한 인터페이스를 포함 할 수 없습니까?
public class Sandbox {
public interface Listener<T extends JComponent> {
public void onEvent(T event);
}
public interface AnotherInterface extends Listener<JPanel>, Listener<JLabel> {
}
}
이것은 다음 오류와 함께 실패합니다.
/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
왜 그래도됩니까? 생성 된 메소드에는 겹침이 없습니다. 사실, 그것은 본질적으로
public interface AnotherInterface {
public void onEvent(JPanel event);
public void onEvent(JLabel event);
}
를 의미합니다. 그렇다면 왜 실패 하는가?
내가하고있는 일에 대해 궁금한 점이 있으면 더 좋은 해결책이 있습니다. 위의 Listener
클래스와 거의 비슷한 Listener 인터페이스와 이벤트 묶음이 있습니다. 나는 어댑터와 어댑터 인터페이스를 만들고 싶다. 그래서 모든 리스너 인터페이스를 특정 이벤트로 확장해야한다. 이것이 가능한가? 이 작업을 수행하는 더 좋은 방법이 있습니까?
아, 타입 지우기를 잊어 버렸습니다. 내가하고 싶은 일을 성취하기위한 다른 방법을 알고 있습니까? – TheLQ
@TheLQ, 업데이트 됨. –
@Stas 그건 이벤트 당 코드 톤 (~ 50)처럼 보입니다. 어쩌면 이벤트별로 청취자를 명시 적으로 작성해야할까요? – TheLQ