Java Generics and Collections by Maurice Naftalin、Philip Wadler、私はジェネリックスの制限を克服して疑念を抱いていました。それは本で答えられるかもしれないが、私は恋人を混乱させていると思う。次のコードで
:
タイプセーフティ警告
List<List<?>> lists = new ArrayList<List<?>>();
lists.add(Arrays.asList(1,2,3));
lists.add(Arrays.asList("four","five"));
assert lists.toString().equals("[[1, 2, 3], [four, five]]");
最初のリストについては、それはそれはリスト型のオブジェクトが含まれていることを知っているので、ネストされたワイルドカードのインスタンス化は、問題がないことを、本の中で言われています。
しかし、上記のコードを修正しようとしましたが、1つの警告と1つのコンパイル時エラーが発生しました。
List<?> sample= Arrays.asList(1,2,3);
をなし警告は、ここで発行されていないが、もし、前のブロックで記述されたように:私が書く場合は最初の行で) 1:私の質問はあり
List<?> sample= Arrays.asList(1,2,3,4.14);
List<List<?>> lists = new ArrayList<List<?>>();
lists.add(Arrays.asList(1,2,3));
lists.get(0).add(5);
lists.add(Arrays.asList("four","five"));
System.out.println(sample.toString());
assert lists.toString().equals("[[1, 2, 3], [four, five]]");
:私はやってみました私は書く:
List<?> sample= Arrays.asList(1,2,3,4.14);
警告が発行されます。どうして?事前に
lists.get(0).add(5);
ありがとう:
2)なぜ、4行目のコンパイル時にエラーがあります。
報告されている警告とエラーは何ですか? – WhiteKnight