上級 › raw type とワイルドカードの使い分け › パターン5
raw type とワイルドカードの使い分け
型引数を省くと型安全が失われます。
1 import java.util.ArrayList; 2 import java.util.List; 3 public class Main { 4 static List getRaw() { 5 List list = new ArrayList(); 6 list.add(____); ^ 7 return list; 8 } 9 public static void main(String[] args) { 10 List<String> list = getRaw(); 11 String s = list.get(0); 12 System.out.println(s); 13 } 14 }
Exception in thread "main" java.lang.ClassCastException:
class java.lang.Integer cannot be cast to class java.lang.Stringexited with code 1
空欄を埋めてビルドを通す
raw型を返すメソッドは呼び出し側の型チェックをすり抜けます。警告だけでコンパイルが通り、実際に取り出すまで型の不一致が発覚しません。
次の問題