Я пытаюсь реализовать метод итераций в моем связанном списке, чтобы сделать его более читаемым и более компактным, поскольку он используется более одного раза.Моя проблема с кодом, который я предполагаю, заключается в неправильном понимании обобщений Java с точки зрения объявления метода.Вот ошибка, которую я получаю:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: The method iterate(Nodes<T extends Nodes<T>>) in the type LinkedList<T> is not applicable for the arguments (Nodes<T>)
Я пытался возиться с ожидаемыми типами данных и аргументами, но не мог точно выяснить, в чем проблема.Я проверил некоторые другие вопросы, но не смог найти то, что просил, или, возможно, не смог понять объяснения.
public class LinkedList<T> extends ListTemplate<T>
{
Nodes<T> head;
Nodes<T> tail;
//declaration of method
private <T extends Nodes<T>> Nodes<T> iterate(Nodes<T> head)
{
Nodes<T>iterate=head;
while(iterate.getNext()!=null)
{
iterate=iterate.getNext();
}
return iterate;
}
//the method call
public void Enqueue(T data)
{
Nodes<T>new_node=new Nodes<T>(data);
//head is set for null when list is empty
if(head==null)
{
//if the list is empty both head and tail will box new_node
head=new_node;
tail=new_node;
}
//if we insert something to list head wont be null
else if(head!=null)
{
tail=iterate(head);
tail.setNext(new_node);
}
}
Код работает, когда я не пытаюсь создать отдельный метод и реализовать его вкод.Ожидаемый результат, заставляющий этот метод перебирать список предоставленных мною узлов и возвращать последний узел.Я не уверен в своей ошибке, но, вероятно, декларация проблематична.