なぜそれが署名付き 方法であって汎用リストを返すメソッドで型付きリストを受け取る呼び出しリスト?
public void foo(List<String> string)
はグアバによって呼び出されるカント:foo(Lists.newArrayList())
又はjava7s:foo(new ArrayList<>())
なぜそれが署名付き 方法であって汎用リストを返すメソッドで型付きリストを受け取る呼び出しリスト?
public void foo(List<String> string)
はグアバによって呼び出されるカント:foo(Lists.newArrayList())
又はjava7s:foo(new ArrayList<>())
コンパイラではないのでどんなタイプのものかを正確に推測することができます。あなたはなぜ、型を推論することはできませんコンパイラ
foo(Lists.<String>newArrayList());
で何をしたいタイプコンパイラに伝えることができますか?あなたはbar(newObject())
を持っている場合、コンパイラはそれを呼び出す必要がありますどの方法を決定することはできませんこれらのメソッド
<T> T newObject();
void bar(Integer i);
void bar(String s);
を考えてみましょう。コンパイラは、現在可能なメソッドが1つしかない場合でも、呼び出すメソッドを見つける前にパラメータの型を知る必要があります。そうしないと、新しいオーバーロードメソッドがコードを壊します。
ArrayListのインタフェースリストを実装
多分私の質問があったはずです、なぜ型を推論することができません。 –
ちょっと追加しました。 –
ああ、感謝する、ありがとう –