java7钻石语法知识点总结

针对创建泛型定义和实例太过繁琐的问题,Java 7做了一项改进,以减少处理泛型时敲键盘的次数。比如你用userid(整型值)标识一些user对象,每个user都对应一个或多个查找表1。这用代码应该如何表示呢?

一种为提高处理速度而用查询取代计算的处理机制。一般是将事先计算好的结果存在数组或映射中,然后在需要该结果时直接读取,比如用三角表查某一角度的正弦值。——译者注

Map<Integer, Map<String, String>> usersLists =
    new HashMap<Integer, Map<String, String>>(); 

这简直太长了,并且几乎一半字符都是重复的。如果能写成

Map<Integer, Map<String, String>> usersLists = new HashMap<>();

让编译器推断出右侧的类型信息是不是更好?神奇的Coin项目满足了你这个心愿。在Java 7中,像这样的声明缩写完全合法,还可以向后兼容,所以当你需要处理以前的代码时,可以把过去比较繁琐的声明去掉,使用新的类型推断语法,这样可以省出点儿空间来。

编译器为这个特性采用了新的类型推断形式。它能推断出表达式右侧的正确类型,而不是仅仅替换成定义完整类型的文本。

为什么叫“钻石语法

把它称为”钻石语法”是因为这种类型信息看起来像钻石。原来提案中的名字是“为泛型实例创建而做的类型推断改进”(Improved Type Inference for Generic Instance Creation)。这个名字太长,可缩写ITIGIC听上去又很傻,所以干脆就叫钻石语法了。

新的钻石语法肯定会让你少写些代码。我们最后还要探讨Coin项目中的一个特性——使用变参时的警告信息。

以上就是关于java7中钻石语法的概念知识点,希望我们整理的内容能够帮助到大家。

(0)

相关推荐

  • java7钻石语法知识点总结

    针对创建泛型定义和实例太过繁琐的问题,Java 7做了一项改进,以减少处理泛型时敲键盘的次数.比如你用userid(整型值)标识一些user对象,每个user都对应一个或多个查找表1.这用代码应该如何表示呢? 一种为提高处理速度而用查询取代计算的处理机制.一般是将事先计算好的结果存在数组或映射中,然后在需要该结果时直接读取,比如用三角表查某一角度的正弦值.--译者注 Map<Integer, Map<String, String>> usersLists = new HashMap

  • 详解PHP 7.4 中数组延展操作符语法知识点

    在数组表达式中对展开操作符(Spread Operator)支持的 RFC 投票是 绝大多数人赞同 将此功能添加到 PHP 7.4. 扩展运算符支持参数解包首先存在于 PHP 5.6 中,并且此 RFC 扩展了对数组的使用:扩展可以支持 Traversable 的数组和对象.这是 RFC 的一个基本示例: $parts = ['apple', 'pear']; $fruits = ['banana', 'orange', ...$parts, 'watermelon']; // ['banana

  • R语言基本语法知识点

    我们将开始学习R语言编程,首先编写一个"你好,世界! 的程序. 根据需要,您可以在R语言命令提示符处编程,也可以使用R语言脚本文件编写程序.让我们逐个体验不同之处. 命令提示符 如果你已经配置好R语言环境,那么你只需要按一下的命令便可轻易开启命令提示符 $ R 这将启动R语言解释器,你会得到一个提示 > 在那里你可以开始输入你的程序,具体如下. > myString <- "Hello, World!" > print ( myString) [1]

  • Python3基础语法知识点总结

    本章节将一些Python3基础语法整理成手册,方便各位在日常使用和学习是查阅,包含了编码.标识符.保留字.注释.缩进.字符串等常用内容. 编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码: #*- coding: cp-1252*- 标识符 第一个字符必须是字母表中字母或下划线'_'. 标识符的其他的部分有字母.数字和下划线组成. 标识符对大小写敏感. 在 Python 3中,非ASCII 编码的标识

  • PHP编程入门的基本语法知识点总结

    一.何为php PHP,即"PHP: Hypertext   Preprocessor",是一种被广泛应用的开源通用脚本语言,尤其适用于 Web 开发并可嵌入 HTML   中去.它的语法利用了 C.Java 和 Perl,易于学习.该语言的主要目标是允许 web 开发人员快速编写动态生成的 web   页面,但 PHP 的用途远不只于此. 简单来说,就是php是一种脚本语言,可以做很多事情.①服务器端脚本 ②命令行脚本 ③编写桌面程序 二.开始php (1)下载php解释器,其实wi

  • Ruby中一些基本语法知识点的罗列汇总

    让我们写一个简单的ruby程序.所有Ruby源文件将以扩展名.rb.因此,把下面的源代码在一个test.rb文件. #!/usr/bin/ruby -w puts "Hello, Ruby!"; 在这里,假定您已经安装有Ruby解释器,可以在/usr/bin目录找到.现在尝试运行此程序如下: $ ruby test.rb 这将产生以下结果: Hello, Ruby! 通过以上实例,我们已经看到了一个简单的Ruby程序,现在让我们来看看有关Ruby语法的几个基本概念: Ruby程序中的空

  • php中sort函数排序知识点总结

    在我们进行排序的时候,难免要用到一些函数来执行.php中排序函数有很多种,就拿sort函数来说,在排序的作用发挥上是从低到高,这点是大家要注意的,也算是符合我们生活中的排序习惯.下面我们就php中sort函数的概念.语法.返回值.实例分别带来介绍,一起来体会下它的排序使用吧. 1.概念 用于对数组单元从低到高进行排序. 注意:本函数会为排序的数组中的单元赋予新的键名,这将删除原有的键名而不仅是重新排序. 2.语法 sort(array,sortingtype); 3.返回值 如果成功则返回 TR

  • Java并发编程示例(二):获取和设置线程信息

    Thread类包含几个属性,这些属性所表示的信息能帮助我们识别线程.观察其状态.控制其优先级等.这些线程包括如下几种: ID: 该属性表示每个线程的唯一标识: Name: 该属性存储每个线程的名称: Priority: 该属性存储每个Thread对象的优先级.线程优先级分1到10十个级别,1表示最低优先级,10表示最高优先级.并不推荐修改线程的优先级,但是如果确实有这方面的需求,也可以尝试一下. Status: 该属性存储线程的状态.线程共有六种不同的状态:新建(new).运行(runnable

  • php中rsort函数实例用法

    在讲到升序的数组方法后,那么对应的就会出现降序的方法.在我们正式揭晓方法之前,大家已经学习了sort函数的用法,那么对应的降序函数名称就是rsort() .两个函数在结构语法上都非常相似,下面我们就rsort() 函数的概念.语法.返回值.降序实例带来介绍,具体使用方法如下. 1.概念 rsort() 函数行为与 sort() 相反,对数组单元进行由高到低排序. 注意: 如果数组元素是数字,则根据数字排序:如果数组元素是字符串,则根据字母排序:如果数组包含数字值和文本/字符串,则根据字母排序.

  • Kotlin编程循环控制示例详解

    目录 本文总览 1. While循环 2. For循环 3. break和continue 3.1 break语句 3.2 continue语句 总结 本文总览 本篇来学习Kotlin循环结构的知识 1. While循环 while循环用于重复迭代代码块,只要给定条件为 true就会执行一次循环代码块.若条件为 false,则直接跳过循环代码块执行后面代码. while (x > 0) { x-- } // 当条件 x>0 成立,x 就会减一 do-while循环 与 while循环相类似,也

随机推荐