Java 方法匹配接口原型,但赢得';t覆盖

Java 方法匹配接口原型,但赢得';t覆盖,java,generics,types,implements,erasure,Java,Generics,Types,Implements,Erasure,我有以下代码: public interface StackInterface<T> { public T pop(); public void push(T n); } public class myStack<T> implements StackInterface<Node<T>> { Node<T> head; Node<T> next; Node<T> tail; pub

我有以下代码:

public interface StackInterface<T> {
   public T pop();
   public void push(T n);
}


public class myStack<T> implements StackInterface<Node<T>> {
  Node<T> head;
  Node<T> next;
  Node<T> tail;
  public myStack(T t) {
        head = new Node<T>(t);
        head.next = null;
        tail=head;
  }

public myStack() {
    head = null;
    tail=head;
}

public Node<T> pop() {
    if(head==null) {
        return null;
    }
    Node<T> t= head;
    head=head.next;
    return t;
}

public void push(T n) {
    Node<T> t = head;
    head = new Node<T>(n);
    head.next = t;
}

}
公共接口堆栈接口{
公共T pop();
公共无效推送(tn);
}
公共类myStack实现StackInterface{
节点头;
节点下一步;
节尾;
公共myStack(T){
头部=新节点(t);
head.next=null;
尾=头;
}
公共myStack(){
head=null;
尾=头;
}
公共节点pop(){
if(head==null){
返回null;
}
节点t=头部;
head=head.next;
返回t;
}
公共无效推送(T n){
节点t=头部;
头部=新节点(n);
head.next=t;
}
}
此代码显示以下错误:

在类声明行上;它说它没有实现方法public void push(tn); 在public void push(TN)线上,它说:

myStack的push方法与StackInterface的push方法具有相同的擦除功能,但不覆盖它


方法原型相同;添加@Override没有任何作用。为什么会发生这种情况?

因为您正在实现
StackInterface
,所以需要使用push方法

public void push(Node<T> n) {
}
公共无效推送(节点n){
}

您需要以这种方式实现,然后您的模板匹配

public class myStack<T> implements StackInterface<T>
公共类myStack实现StackInterface

看起来推送签名需要是
公共无效推送(节点n)
?感谢回复;这消除了错误…但仍然没有达到我预期的功能。我是否应该在界面、myStack和Node中添加另一个泛型(可能是U)以使其正常工作?看起来您正试图通过推/弹出来模拟LinkedList,但我看不到列表,除非我遗漏了什么。也许你应该编辑这个问题,这样它就反映了新的问题,因为我不完全确定你想做什么。除非Node是您自己的类并且本身是某种列表?+1,否则Node的使用是一种实现选择,不应该通过API可见。你有一堆T,而不是Node