当前位置:  开发笔记 > 编程语言 > 正文

为什么java允许对象声明不包含该类型

如何解决《为什么java允许对象声明不包含该类型》经验,为你挑选了1个好方法。

为什么java允许对象声明不包含该类型

Map> foos = new HashMap<>();
Map> foos = new HashMap>();

第二个声明比第一个声明正确,但为什么java在编译期间不会抛出警告.如何强制编译器抛出此类错误.



1> scottb..:

为什么java允许对象声明不包含该类型

Map> foos = new HashMap<>(); 
Map> foos = new HashMap>();

第二个声明比第一个声明正确,但为什么java在编译期间不会抛出警告.如何强制编译器抛出此类错误.

从Java 7开始,上面的两个语句在编译时产生完全相同的字节码.

Java 7引入了菱形运算符("<>"),它允许编译器对类型声明语句执行类型推断.钻石操作员不得与原始类型混淆(根本不使用尖括号指定).

在上面的第一个语句中,编译器根据赋值语句左侧声明的类型推断>新实例化HashMap的类型foos.

菱形运算符实际上只是一些语法糖,它new在赋值语句中使用运算符时允许一些简写,其中新对象的类型可以由编译器推断.

在Java 8中使用lambda表达式更广泛地使用类型推断,并且扩展了java编译器的类型推断规则,以允许类型推断在更广泛的情况下"像您期望的那样"工作.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有