从有效的Java:
泛型方法的一个值得注意的特性是,您不需要像调用泛型构造函数时那样显式指定类型参数的值。编译器通过检查方法参数的类型来计算类型参数的值。
那么如果方法不带参数,编译器如何推断类型呢?
例如,考虑以下静态工厂方法,该方法每次调用时都会创建一个新的 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>