У меня есть следующий код:Метод соответствует интерфейсу прототипа, но не перекроет
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); и на строке public void push (T n) говорится:
Метод push myStack имеет то же стирание, что и push StackInterface, но не отменяет его.
Прототипы метода идентичны; добавление @Override ничего не делает. Почему это происходит?
Похоже, что сигнатура push должна быть «public void push» (Node n) '? –
Radiodef
Спасибо за ответ; который избавился от ошибки ... но все же я не в своей предполагаемой функциональности. Должен ли я добавить еще один общий, возможно, U в интерфейс, myStack и Node, чтобы заставить его работать? –
Ну, похоже, вы пытаетесь создать аналог LinkedList с нажатием/выталкиванием, но я не вижу список, если я не пропущу что-то. Может быть, вы должны отредактировать вопрос, чтобы он отражал новую проблему, поскольку я не совсем уверен, что вы хотите сделать. Если Node не является вашим собственным классом и не является каким-то списком? – Radiodef