2017-12-03 9 views
3

Oracleの公式Javaの文書、タイプ推論章では、このような例がありますが:異なるJavaジェネリック型パラメータの名前が同じ場合、異なるタイプを割り当てることができる理由は何ですか?

static <T> T pick(T a1, T a2) { return a2; } 
Serializable s = pick("d", new ArrayList<String>()); 

この場合、型パラメータはTですが、2つの異なるタイプを渡された、A1のタイプはA2と同じであってはなりません?

+1

コードは、引用符ではなくコード形式にする必要があります。 – user2357112

答えて

9

推論アルゴリズムは、引数のタイプと、可能であれば、結果が割り当てられている、または戻されているタイプを判別します。最後に、推論アルゴリズムはすべての引数で動作する最も特殊な型を見つけることを試みます。

そして、あなたの例のための最も具体的なタイプStringArrayList両方に祖先である、Serializableです。

関連する問題