0

JavaでAbstractSequentialListクラスを拡張しようとしています。このクラスは、ListIteratorメソッドの作成を必要とするインターフェースを実装します。簡単に始めるために以下のメソッドを作成しましたが、次のような警告メッセージが表示されます。

ListIterator is a raw type. References to generic type ListIterator<E> should be parameterized.  

これは何を意味するのでしょうか?このコードを実行するときに、なぜこれがエラーを引き起こしているのかについて、私は少し戸惑っています。

public ListIterator listIterator(int i){

        ListIterator listiterator = this.listIterator();

        return listiterator;
    }
4

1 に答える 1

0

AbstractSequentialListは汎用であるため、返されるListIteratorである必要があります。これにより、そのイテレータを使用して実行される操作の型安全性が確保されます。サブクラスがgeneric(MyAbstractSequentialList<T>)であることを確認し、コードを次のように変更します。

public ListIterator<E> listIterator(int i){

        ListIterator<E> listiterator = this.listIterator();

        return listiterator;
}

JavaのLinkedListソースコードを見ることができます。それは。を拡張しAbstractSequentialListます。

クラスを非ジェネリックにすることもできますが、その場合は、の具体的な型を拡張する必要がありますAbstractSequentialList(つまり、指定された型引数を使用します)。その場合は、E上記のコードのsもそのタイプに置き換えてください。

于 2012-07-03T04:06:03.467 に答える