方法匹配接口原型,但不会覆盖

时间:2013-10-28 03:23:03

标签: 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;
  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;
}

}

此代码显示以下错误:

在班级申报单上;它说它没有实现public void push(T n)方法; 并且在公共无效推送(T n)线上它说:

myStack的方法推送与StackInterface的推送相同,但不会覆盖它。

方法原型是相同的;添加@Override什么都不做。为什么会这样?

2 个答案:

答案 0 :(得分:1)

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

public class myStack<T> implements StackInterface<T>

答案 1 :(得分:0)

因为您正在实施StackInterface<Node<T>>,所以推送方法需要

public void push(Node<T> n) {
}