-3

listIteratorを使用しているときにエラーが発生する理由がわかりません。エラーが発生した場所の後にコメントが続きます

これは私のコードです:

   /**
      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*/

私はそれらを修正する方法がわからないので、助けが必要です。ありがとうございました

4

2 に答える 2

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 ですが、非ジェネリック 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 はジェネリックではありません。ジェネリックにすることができます.ieListIterator<String>

また、この警告をそのままにしておくことを知っているコンパイラーに通知することで、この警告を削除することもできます。

 @SuppressWarnings("rawtypes")
class LinkedListIterator implements ListIterator 
于 2012-04-17T17:47:23.130 に答える
1

このエラーが発生しています

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

クラスLinkedListIteratorで定義されたすべてのメソッドを実装する必要があるためです。ListIteratorそれを行うまで、あなたのLinkedListIteratorタイプは実際には存在しません。

于 2012-04-17T17:42:51.610 に答える