1

Java 10 では、これにより警告が表示されます -

ArrayList a = new ArrayList<>();
a.add(23);
a.add("str");

「ArrayList は生の型です。ジェネリック型 ArrayList への参照はパラメータ化する必要があります」

そしてその理由は一般的な背後にありますが、このコードの場合

var b = new ArrayList<>();//Object type
b.add(3);
b.add("string");

コンパイラから警告が出されなかったのはなぜですか?

var:-メソッドスコープに限定されて知ってvar のジェネリックに取り除かれた設計概念を知りたかっただけです

Edit1 :-内部設計について知りたかっただけなので、重複としてマークしないでください。なぜjavaはvarに一般的なものを追加しなかったのですか?

4

2 に答える 2

0

ですのでArrayList<Object>Objectは、任意の型を表す Java の最上位の型であるため、リストに何かを追加しても常に安全です。

最初の例では、生の型を使用したために警告が表示されました。Raw 型は Java のレガシーであり、下位互換性のためにのみ存在します。それらを使用しないでください。

于 2018-05-26T15:14:10.360 に答える