新しい言語機能をテストするために、最新の JDK 8 ea b114 をインストールしました。ただし、連鎖呼び出しでの推論はまだ機能していないようです。
私が書く場合:
Iterator<String> it = new ArrayList<>().iterator();
コンパイラは私にエラーを出します。
ただし、引数の位置での推論はうまく機能します。
チェーン呼び出しでの推論は挿入されないのでしょうか?
最新の仕様 (パブリック レビュー) はjcp.orgで入手できます。パート D には、この点について論じている段落があります。
メソッド呼び出し、フィールド アクセスなどのレシーバー (exp.foo()) は、ターゲットの型が不明であるため、poly 式ではありません。特定のメンバー (この場合は foo) を持つすべての型を列挙することは不可能です。 )。a().b() では、b の呼び出しから a の呼び出しに型情報を渡します。これは、部分的な情報が双方向に渡される必要があるため、推論アルゴリズムの複雑さに別の次元を追加します。a() の戻り型の消去がすべてのインスタンス化 (例: List) に対して固定されている場合にのみ機能します。ターゲットの型を簡単に導出できないため、この機能は poly 表現モデルにはあまり適合しません。