2012-04-17 9 views
-2

Я не понимаю, почему я получаю сообщение об ошибке, когда я использую listIterator? spot где я получил ошибку, следуйте комментарием.Как я могу исправить ошибки, которые я поместил в комментарии?

это мой код:

/** 
     Returns an iterator for iterating through this list. 
     @return an iterator for iterating through this list 
    */ 
    public ListIterator<String> listIterator() 
    { 
     return new LinkedListIterator(); 
     // error here it says: Type safety: The expression of type 
     // LinkedList.LinkedListIterator needs unchecked conversion to conform 
     // to ListIterator<String> 
    } 

    class Node 
    { 
     public Object data; 
     public Node next; 
    } 

    class LinkedListIterator implements ListIterator 
    /* here also it says:The type LinkedList.LinkedListIterator must implement 
    the inherited abstract method ListIterator.previousIndex() when i implement 
    the listIterator it says:ListIterator is a raw type. References to generic 
     type ListIterator<E> should be parameterized*/ 

Я не знаю, как их исправить, так что любая помощь будет принята. спасибо

+1

Возможно, хорошая книга новичка на Java или обучение учебникам Oracle будет хорошей инвестицией. –

ответ

1

Вы получаете эту ошибку

LinkedList.LinkedListIterator must implement the inherited abstract method ListIterator.previousIndex() 

LinkedListIterator, потому что потребности реализовать все методы, определенные в классе ListIterator. Пока вы этого не сделаете, ваш тип LinkedListIterator фактически не существует.

+0

Было бы здорово, если бы вы и @ user1270995 могли объединить ваши ответы, так как нужны обе части. – Perception

3

В своем первом методе

public ListIterator<String> listIterator() 
    { 
     return new LinkedListIterator(); // error here it says: Type safety: The expression of type LinkedList.LinkedListIterator needs unchecked conversion to conform to ListIterator<String> 
    } 

Ваш Возвращаемый тип является общим ListIterator, но вы возвращаете Non Generic LinkedListIterator. В ответ вы получаете только предупреждение Его не ошибка, вы можете просто удалить его, добавив ..

@SuppressWarnings("unchecked") 
public ListIterator<String> listIterator() 
    { 
     return new LinkedListIterator(); // error here it says: Type safety: The expression of type LinkedList.LinkedListIterator needs unchecked conversion to conform to ListIterator<String> 
    } 

Во-вторых, когда вы добавляете свой нереализованный метод вы получаете еще одно предупреждение, которое не является ошибкой.

class LinkedListIterator implements ListIterator 

ListIterator не родовое вы можете сделать это generic.ie ListIterator<String>

, и вы также можете удалить это предупреждение, информирующее компилятор вы знаете, что пусть это будет, как это по

@SuppressWarnings("rawtypes") 
class LinkedListIterator implements ListIterator 
+0

Спасибо за расширение вашего ответа. +1. – Perception