Я получаю эту ошибку "Type mismatch: cannot convert from Object to E"
в последней строке метода pop()
.Ошибка в общем коде
Узел
public class Node<E> {
E item;
Node next;
Node(E item) {
this.item = item;
this.next = null;
}
Node(E item, Node next) {
this.item = item;
this.next = next;
}
}
Stack
import java.util.NoSuchElementException;
public class Stack<E> {
private Node head;
private int size;
Stack() {
head = null;
size = 0;
}
public void push(E item) {
head = new Node (item, head);
size++;
}
public E pop() throws NoSuchElementException {
Node nodeToBePopped;
if (size == 0) {
throw new NoSuchElementException();
}
nodeToBePopped = head;
head = head.next;
size--;
return nodeToBePopped.item;
}
}
Я не понимаю, почему эта ошибка возникает, несмотря на пункт был объявлен как тип Е в классе Node. Почему я должен сделать явное приведение в этом экземпляре?
Пожалуйста, приложите больше усилий для форматирования кода, когда задаете вопросы. Посмотрите предварительный просмотр, прежде чем ударять сообщение, и убедитесь, что он похож на вопрос, который вы хотите прочитать. –
(И, пожалуйста, используйте пробелы вместо вкладок для отступов.) –
Жаль, Джон. В следующий раз я буду уверен. – Prasanna