因此,我将为您节省大量的代码块,并按部就班。我有两个类:一个是“ AbstractNode”基类,另一个是“ TokenRingNode”类。 AbstractNode的签名是这样的:

public abstract class AbstractNode <E extends NetworkEvent>


然后是TokenRingNode的签名:

public class TokenRingNode extends AbstractNode<TokenRingEvent>


我在AbstractNode中有一个方法是:

public abstract void createEvent(AbstractNode<E> destinationNode);


我也尝试过:

public abstract <N extends AbstractNode<E>> createEvent (N destinationNode)


然后在TokenRingNode中,我用以下方法覆盖此抽象方法:

public void createEvent(TokenRingNode destinationNode) { ... }


问题是,编译器不认为这是有效的覆盖,因此我不确定为什么。 TokenRingNode扩展了Abstract,所以有人可以向我说明为什么该方法不是有效的替代吗?

最佳答案

您可以尝试在AbstractNode中为此定义两个泛型:

public abstract class AbstractNode <E extends NetworkEvent, A extends AbstractNode>
...
public abstract void createEvent(A destinationNode);


然后将其子类化为

public class TokenRingNode extends AbstractNode<TokenRingEvent, TokenRingNode>

10-02 01:12