2014-01-15 5 views
7

Eclipseは、何もない作業中のプロジェクトで次のコードを使用してダミークラス主な方法:型の安全性:メソッド..生の型に属しています..ジェネリックのリファレンスをパラメータ化する必要があります

List a = new ArrayList(); 
List<Integer> b = new ArrayList<Integer>(); 
int x = 19; 
a.add(x); 

最後の行で警告が表示されます。私はここで間違って何をしているのか、まさに私がやっていることを確信していません。私は疑わしいチュートリアルの後にJavaの学生であり、私はジェネリックスを理解しようとしています。おそらく、変数xは型の安全性を示していません。私はObject型にキャストしようとしましたが(これは既に何もしていないと思います)、動作しませんでした。

この警告はどうすれば解決できますか?

答えて

7

タイプパラメータなしでList aと宣言しました。これは、あなたがそのリストにどのようなタイプのオブジェクトも追加できるように、eclipseが型の安全性について不平を言っている理由です。

あなたはArrayList apiを見て、クラス宣言を見てみた場合、あなたはそれは次のように宣言されて参照してください。あなたが望む任意のクラスと

public class ArrayList<E> 

代替のE。

List<Integer> bでは、リストがIntegerオブジェクトのインスタンスのみを保持することを明示的にコンパイラに伝えており、コンパイラはこれを検証して型の安全性を提供します。

+0

ああ、大丈夫です。 (私は両方の行を書くように言われていましたので、私は警告を受けました。私はそれが何を意味するのか解読できなかったので、まだ快適ではありません)。 –

+1

@Stopforgettingmyaccounts ...ジェネリックスは型の安全性を提供する代替手段を提供するので、生のリストをもう使用しないでください。ここでの主なことは何が起きているのかを知ることです:) – Zavior

関連する問題