Невозможно включить один и тот же интерфейс с разными параметрами?

Рассмотрим следующий пример:

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 выше. Я хочу создать адаптер и интерфейс адаптера, и для этого мне нужно расширить все интерфейсы Listener с помощью определенного события. Это возможно? Есть ли лучший способ сделать это?

10
задан TheLQ 12 December 2010 в 07:00
поделиться