コンパイラがこのコードを受け入れない理由がわかりません
import javax.swing.event.EventListenerList;
import java.util.EventListener;
public class GenericEventsManager {
EventListenerList listeners = new EventListenerList();
public <T extends EventListener> void addListener(T listener) {
listeners.add(listener.getClass(), listener);
}
}
私が得るエラーは
The method add(Class<T>, T) in the type EventListenerList is not applicable for the arguments (Class<capture#1-of ? extends EventListener>, T)
addListener の引数は EventListener を拡張する型であるため、listener.getClass() は を返しますClass<? extends EventListener>
。これはまさに EventListenerList.add メソッドが期待するものです。
誰かがこれを説明できますか?コンパイル時に getClass() が解決されていないことに関係があると感じていますが、それでも意味がありません