因此,我将为您节省大量的代码块,并按部就班。我有两个类:一个是“ 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>