一个引用java接口但任何没有实现的源码解读

有个类一直无法理解,情况是这样的,该类有个内部接口,确定没有任何实现方法,怀疑代码不全需要自己补充,请高手支招确定下,第一次发帖,望大家捧捧场,谢谢!

PresenceEventDispatcher继承的一个引用自己内部接口的抽象类,有“<”刚被csdn隐藏了

public class PresenceEventDispatcher extends EventDispatcher<PresenceEventDispatcher.PresenceEventListener> {

private final PresenceWorker presenceWorker = new PresenceWorker();

public void availableSession(ClientSession session) {
    if (!listeners.isEmpty()) {
        for (PresenceEventListener listener : listeners) {
            listener.availableSession(session);
        }
    }
    presenceChanged(session);
}

public void unavailableSession(ClientSession session) {
    if (!listeners.isEmpty()) {
        for (PresenceEventListener listener : listeners) {
            listener.unavailableSession(session);
        }
    }
    presenceChanged(session);
}

public void presenceChanged(ClientSession session) {
    if (!listeners.isEmpty()) {
        for (PresenceEventListener listener : listeners) {
            listener.presenceChanged(session, session.getPresence());
        }
    }
    presenceWorker.push(session.getPresence());
}

public interface PresenceEventListener extends EventListener {
    public void availableSession(ClientSession session);

    public void unavailableSession(ClientSession session);

    public void presenceChanged(ClientSession session, Presence presence);

}

}

public abstract class EventDispatcher {

protected List<T> listeners = new CopyOnWriteArrayList<T>();

/**
 * Registers a listener to receive events.
 *
 * @param listener the listener.
 */
public void addListener(T listener) {
    if (listener == null) {
        throw new NullPointerException();
    }
    listeners.add(listener);
}

/**
 * Unregisters a listener to receive events.
 *
 * @param listener the listener.
 */
public void removeListener(T listener) {
    listeners.remove(listener);
}

}

语法上就报错了吧,public interface PresenceEventListener 方法?

那几个接口方法应该在EventDispatcher 类中已经实现了。然后PresenceEventDispatcher 重写了那几个方法。

分析下你的代码是没有问题的。
首先,PresenceEventDispatcher extends EventDispatcher这个继承关系没有问题的,你的抽象类中没有抽象方法需要PresenceEventDispatcher来实现,所以这个类的代码是完整的。
其次,PresenceEventDispatcher这个类继承了一个列表,存储一组内部类PresenceEventListener 的引用,这个list应该是其他类调用时传入的,不应该由这个类实现的。
你可以跟踪下PresenceEventListener 类的实现有哪些,单击选中这个类名,然后ctrl+T查看这个类的继承体系。

EventDispatcher 这只是传进去的一个泛型吧,实现接口的关键字是 implements,不知道是楼主理解错了还是我理解错了