我很好奇为什么我们需要Java7中的钻石操作符?我们可以使用一个简单的静态泛型方法来模拟这种行为,该方法可以添加到集合API中:
HashMap的方法代码:
public static <R, S> HashMap<R, S> getInstance() {
return new HashMap<R, S>();
}
我们可以这样使用它:
Map<String, List<String>> m = HashMap.getInstance();
当您可以尝试此行为时编码:
import java.util.HashMap;
import java.util.Map;
import java.util.List;
import java.util.Arrays;
public class Diamond {
public static void main(String... args) {
Map<String, List<String>> m = getInstance();
m.put("Hello", Arrays.asList("Peter", "Robert"));
System.out.println(m.toString());
}
public static <R, S> HashMap<R, S> getInstance() {
return new HashMap<R, S>();
}
}
答案 0 :(得分:5)
虽然你是正确的,可以使用通用工厂方法来避免在创建通用对象时重复类型参数,但这种方法有一些缺点: