我不明白为什么编译器不接受这段代码
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() 在编译时没有被解决有关,但对我来说仍然没有意义