効果的なJavaから:
ジェネリックメソッドの注目すべき機能の1つは、ジェネリックコンストラクターを呼び出すときに必要なように、型パラメーターの値を明示的に指定する必要がないことです。コンパイラーは、メソッド引数の型を調べることにより、型パラメーターの値を計算します。
では、パラメーターを受け取らないメソッドの場合、コンパイラーはどのように型を推測するのでしょうか。
たとえば、呼び出されるたびに新しいHashMapを作成する次の静的ファクトリメソッドについて考えてみます。
// Generic static factory method
public static <K,V> HashMap<K,V> newHashMap() {
return new HashMap<K,V>();
}
そして、メソッドが次のように呼び出されたとき:
Map<String,String> pair = newHashMap(); //it returns a Map<String,String>
そしてそれが
Map<String, List<String>> anagrams =newHashMap(); // it returns a Map<String,List<String>