java diamond_Java diamond operator
在Java 7之前,使用generics我们必须为变量类型及其实际类型提供类型参数。 现在,此新的Java 7功能已使它有所缓解。 声明右侧的空白Java diamond operator可以正常工作。
菱形算符用两个角度'< >' 。
1. Before generics – raw type declarations
如果您使用的是Java的早期版本(1.5之前的版本),则当泛型不是Java功能时,开发人员必须使用原始类型声明和初始化。 例如,下面给出的是一个HashMap声明。Map params = new HashMap();
这种方法的问题是,您可以将任何对象类型都放入键和值中,并且只有在运行时,如果对象不是所需类型,才会出现错误。 没有编译时安全可以警告开发人员,哪些类型是允许的,哪些类型是不允许的。
2. Generics – parameterized types
JDK 1.5带来了泛型。 它必须具有许多急需的功能,并且完全改变了开发人员编写代码的方式。 它启用了编译时安全性。 它有助于大量减少运行时错误。Map params = new HashMap();
该语法解决了编译时类型安全的问题。 实际上,以上语法几乎适用于所有用例。 在上面的示例中,如果尝试添加任何其他类型的键或值,则编译器将给您错误。
您需要修复代码才能通过编译器。
3. Diamond operator
参数化类型可以解决问题,但由于双方重复的类型信息相同,因此看起来很繁琐。 如果我们可以在一侧提供类型信息,而另一侧可以检测和应用类型信息,则可以减少语法。
Java中的Diamond运算符执行完全相同的操作 。 它也被称为Elvis operator 。 在下面查看diamond operator syntax 。Map params = new HashMap<>();
在上面的代码中,编译器足够聪明,可以识别diamond operator推断出声明左侧的类型。 它将类型信息也应用于右侧对象。 它有助于向Java添加类型推断功能。
4. Backward compatibility
为了向后兼容,原始类型和参数化类型仍然存在。 但是新的编译器会在看到原始类型时发出警告。 如果从Java 5开始编译原始类型,您将得到如下警告:ArrayList is a raw type. References to generic type ArrayList should be parameterized
Happy Leaning !!
Read More:
java diamond_Java diamond operator相关推荐
- diamond operator is not supported in -source 1.5和source release 8 requires target release 1.8的问题
Error:(43, 20) java: diamond operator is not supported in -source 1.5 (use -source 7 or higher to ...
- Maven错误 diamond operator is not supported in -source 1.5 (use -source 7 or higher to enable diamond
转自:https://www.cnblogs.com/EasonJim/p/6832049.html Maven错误 diamond operator is not supported in -sou ...
- Java运算符(Operator)之 算数运算符(ArithmeticOperator)
算数运算符(ArithmeticOperator) 概述: Java中使用数据进行数学运算时使用的符号,大部分符号都有自己的算数功能 分类: 一.普通的算数运算 + : 1.表示正数 2.表示加法运算 ...
- Java记录 -4- 运算符 Operator
当有若干个变量参与运算时,结果类型取决于这些变量中表示范围最大的那个变量类型.比如,参与运算的变量中,有整型int,有双浮点型double,有短整型short,那么最后结果类型就是double. in ...
- Fork and Join: Java Can Excel at Painless Parallel Programming Too!---转
原文地址:http://www.oracle.com/technetwork/articles/java/fork-join-422606.html Multicore processors are ...
- [阅读笔记] Java 7 新特性
Time: 1.5 hours 原文:A look at Java 7's new features, by Madhusudhan Konda http://radar.oreilly.com/20 ...
- iamond operator is not supported in -source 1.5
intellij运行flink出现下面的问题 Error:(56, 48) java: diamond operator is not supported in -source 1.5 (use ...
- [转]【JAVA各版本特性】JAVA 1.0
闲来想了解下各版本之间的特性,搜索没有最新的特性说明,故想写一份.废话不多说. JDK Version 1.0 1996-01-23 Oak(橡树) 初代版本,伟大的一个里程碑,但是是纯解释运行,使用 ...
- Java中使用ArrayList的10个示例–教程
Java中的ArrayList是HashMap之后最常用的集合类. Java ArrayList表示一个可自动调整大小的数组,并用于代替数组. 由于创建数组后我们无法修改数组的大小,因此我们更喜欢在J ...
- 针对Java中的XSD验证XML
有许多工具可用于根据XSD 验证XML文档 . 其中包括操作系统脚本和工具,例如xmllint ,XML编辑器和IDE,甚至是在线验证器. 由于前面提到的方法的局限性或问题,我发现拥有自己的易于使用的 ...
最新文章
- hibernate 多对一(Many-to-one)单向关联
- OSError: mysql_config not found
- 九度oj 题目1078:二叉树遍历
- mysql的内存数据库,MySQL内存数据库的新选择-MariaDB4J
- oracle数据库 杀进程,数据库应急杀进程脚本
- AGC011D - Half Reflector(模拟)
- 《代码敲不队》第九次团队作业:Beta冲刺第1天
- 汇编语言编译器masm_计算机汇编语言和指令操作
- C++11 auto类型推导
- 上海世博会物联网技术应用
- 语音对话机器人,百行Python代码就能轻松实现
- 什么是混合移动App开发【重点学习系列---干货十足--一文详解】
- 用别的卡也显示腾讯免流量服务器,央媒点明腾讯大王卡定向免流套路,网友:防不胜防!...
- 领英如何发布动态与查看自己一共发了多少条动态
- Android自定义一个播放器控件
- 数据可视化|用堆叠条形图进行对比分析
- 企业CMS网站建设第二课:CMS模版开发——CMS基础设置与栏目管理
- XILINX SGMII千兆以太网 (2)
- spring的maven依赖
- 2021-2027全球与中国厨房用食品搅拌机市场现状及未来发展趋势