针对创建泛型定义和实例太过繁琐的问题,Java 7做了一项改进,以减少处理泛型时敲键盘的次数。如下代码:
Map<Integer, Map<String,String>> usersList = new HashMap<Integer, Map<String,String>>();
可简写为下面这样吗?
Map<Integer, Map<String,String>> usersList = new HashMap<>();
在Java 7中,像这样的声明缩写完全合法,还可以向后兼容,所以当你需要处理以前的代码时,可以把过去比较繁琐的声明去掉,使用新的类型推断语法,这样可以省出点儿空间来。
编译器为这个特性采用了新的类型推断形式。它能推断出表达式右侧的正确类型,而不是仅仅替换成定义完整类型的文本。
为什么叫“钻石语法”
把它称为”钻石语法”是因为这种类型信息看起来像钻石。原来提案中的名字是“为泛型实例创建而做的类型推断改进”(Improved Type Inference for Generic Instance Creation)。这个名字太长,可缩写ITIGIC听上去又很傻,所以干脆就叫钻石语法了。