[Java]警告:Listはraw型です。総称型Listへの参照は、パラメータ化する必要があります

Pocket

最近めっきり冷え込んで体も懐もヒエヒエです。最近は、なぜ居酒屋に行く回数を減らしたにも関わらず、減るお金は変わらないことが不思議でならないmasaoです。

スポンサーリンク

Javaで警告(ArrayListはraw型です)

別に警告が出ていようが所詮、警告は警告です。しかし、警告の意味がわかりません。気になったので、友人のakiraに調べてもらいました。

// この初期化で警告が出る
List l = new ArrayList();

警告の内容:
Listはraw型です。総称型Listへの参照は、パラメータ化する必要があります
ArrayListはraw型です。総称型ArrayList<E>への参照は、パラメータ化する必要があります

akiraが調べてきました。次のように記述することで警告は表示されなくなります。早い話が、Javaのどこかのバージョンから型を指定してないと警告を出すようになったとのことです。

List<Double> dL = new ArrayList<Double>();
// または
List<Double> dL = new ArrayList<>();

また、akira曰く、

// DoubleはオブジェクトなのでOK
List<Double> dL = new ArrayList<Double>();
// doubleはオブジェクトじゃないのでNG
List<double> dL = new ArrayList<double>();

また、設計としてどうかとは思いますが、何が入ってるかを特定できない、わからない場合は、「?」で「知らない」ということを宣言すればよいとのことです。Object 型じゃダメなのは、interface 型は Object 型を継承していないからじゃないか、と akira が言ってました。

// 型がわからない場合は(?)
List<?> hatena = sample.func(); 

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *