0
(用事:)
それは違法です:
タイプを指定せずにタイプを推論できないときにジェネリックオブジェクトを作成するのはなぜですか?HashSet<> f;
それは法的です:new HashSet<>();
型推論のドキュメントから:
あなたはジェネリックのコンストラクタ を呼び出すために必要な型引数を置き換えることができますコンパイラが型引数をコンテキストから推測できるように、タイプパラメータ(<>)が空の場合、 と長いクラスを持つクラス。
しかし、コンパイラは2番目の例では型引数を推論できません。なぜコンパイルするのですか?
_ジェネリッククラスのコンストラクタを呼び出すために必要な型引数を空の型パラメータセットに置き換えることができます。これは、最初のスニペットでやっていることではありません。 –
また、これは推論できます。これは 'Object'を推論します。型推論の規則は非常に長いですが、それは '新しいHashSet <>()'が減らすものです。 –
2番目の例では、コンパイラが型引数を推論できないという印象はありますか? –