型推論は、各メソッド呼び出しと対応する宣言を調べて、呼び出しを適用可能にする型引数 (または複数の引数) を決定する Java コンパイラの機能です。推論アルゴリズムは、引数の型を決定し、可能な場合は、結果が割り当てられる、または返される型を決定します。最後に、推論アルゴリズムは、すべての引数で機能する最も具体的な型を見つけようとします。
この最後の点を説明するために、次の例では、pick メソッドに渡される 2 番目の引数が Serializable 型であることが推論によって判断されます。
static <T> T pick(T a1, T a2) { return a2; }
Serializable s = pick("d", new ArrayList<String>());
アルゴリズムが最も具体的なタイプを見つけようとするのはなぜですか?