2011-12-27 2 views
1

私は、次の方法のためのEclipseの警告を受ける:パラメータ化されていないarraylistの成果?

public void clearArray(ArrayList a){ 
     a.clear(); 
    } 

警告:

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

コードがうまく実行されますが、これは実際の問題か、単に奇妙な日食である場合、私は思っていました事実...

答えて

1

一般に、事前に知っている場合は、コレクションの正確なタイプ(この場合はArrayList)を指定する方が良いでしょう。あなたはジェネリック型を使ってそれを行います。

これは大きな助けにならないかもしれませんが、他の状況(たとえば、ArrayListに要素を追加する必要がある場合など)では、コンパイラの助けになるので余計な努力が必要ですエラーをキャッチする(ArrayListに間違った型の要素を追加するなど)また、ArrayListから要素を取得するときにキャストが不要になります。あなたの例の特定のケースについては

、このような警告修正:もちろん

public void clearArray(ArrayList<String> a) { 
    a.clear(); 
} 

を、Stringではなく、あなたがArrayListの中に保存している要素の実際の型を使用して、単なる一例です。

+0

それはもっと良いでしょう。 'clearList(リストリスト)' –

+0

一度に1ステップ:) OPはジェネリックスについて今すぐ学んでいます。多態性とインターフェイスを少し後でしましょう。 –

+0

ありがとうございました。思想。あなたが2つの別々のコレクションタイプ(StringとMyObject)をクリアするためにそれを使用する予定があるなら、arraylistをunparamaterizedのままにしておくことは貧しいことです。または、私は先に進んで、メソッドのテストでいくつかのことを行うか、あるいは先に進んで2つの別個のメソッドを作成する必要があります... – benbeel