在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相关推荐

  1. 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 ...

  2. 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 ...

  3. Java运算符(Operator)之 算数运算符(ArithmeticOperator)

    算数运算符(ArithmeticOperator) 概述: Java中使用数据进行数学运算时使用的符号,大部分符号都有自己的算数功能 分类: 一.普通的算数运算 + : 1.表示正数 2.表示加法运算 ...

  4. Java记录 -4- 运算符 Operator

    当有若干个变量参与运算时,结果类型取决于这些变量中表示范围最大的那个变量类型.比如,参与运算的变量中,有整型int,有双浮点型double,有短整型short,那么最后结果类型就是double. in ...

  5. 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 ...

  6. [阅读笔记] Java 7 新特性

    Time: 1.5 hours 原文:A look at Java 7's new features, by Madhusudhan Konda http://radar.oreilly.com/20 ...

  7. 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 ...

  8. [转]【JAVA各版本特性】JAVA 1.0

    闲来想了解下各版本之间的特性,搜索没有最新的特性说明,故想写一份.废话不多说. JDK Version 1.0 1996-01-23 Oak(橡树) 初代版本,伟大的一个里程碑,但是是纯解释运行,使用 ...

  9. Java中使用ArrayList的10个示例–教程

    Java中的ArrayList是HashMap之后最常用的集合类. Java ArrayList表示一个可自动调整大小的数组,并用于代替数组. 由于创建数组后我们无法修改数组的大小,因此我们更喜欢在J ...

  10. 针对Java中的XSD验证XML

    有许多工具可用于根据XSD 验证XML文档 . 其中包括操作系统脚本和工具,例如xmllint ,XML编辑器和IDE,甚至是在线验证器. 由于前面提到的方法的局限性或问题,我发现拥有自己的易于使用的 ...

最新文章

  1. hibernate 多对一(Many-to-one)单向关联
  2. OSError: mysql_config not found
  3. 九度oj 题目1078:二叉树遍历
  4. mysql的内存数据库,MySQL内存数据库的新选择-MariaDB4J
  5. oracle数据库 杀进程,数据库应急杀进程脚本
  6. AGC011D - Half Reflector(模拟)
  7. 《代码敲不队》第九次团队作业:Beta冲刺第1天
  8. 汇编语言编译器masm_计算机汇编语言和指令操作
  9. C++11 auto类型推导
  10. 上海世博会物联网技术应用
  11. 语音对话机器人,百行Python代码就能轻松实现
  12. 什么是混合移动App开发【重点学习系列---干货十足--一文详解】
  13. 用别的卡也显示腾讯免流量服务器,央媒点明腾讯大王卡定向免流套路,网友:防不胜防!...
  14. 领英如何发布动态与查看自己一共发了多少条动态
  15. Android自定义一个播放器控件
  16. 数据可视化|用堆叠条形图进行对比分析
  17. 企业CMS网站建设第二课:CMS模版开发——CMS基础设置与栏目管理
  18. XILINX SGMII千兆以太网 (2)
  19. spring的maven依赖
  20. 2021-2027全球与中国厨房用食品搅拌机市场现状及未来发展趋势

热门文章

  1. 服务器版系统和w7区别,小编告诉大家W7精简版和旗舰版啥区别
  2. 关于12306网站抢票的架构设计
  3. PHP动态网站开发期末试卷,《PHP动态网站开发实例教程》课程考核方案
  4. 新浪微博SSO登陆机制(转载)
  5. 五、线性回归和多项式回归实现
  6. 量化交易之股票数据的获取——同花顺软件
  7. Integer[] cannot be converted to int[]
  8. 为什么不建议在外包公司长期工作及外包公司的简历怎么写
  9. 东北旅行第一天流水账
  10. 系统找不到指定的文件