专栏名称: ImportNew
伯乐在线旗下账号,专注Java技术分享,包括Java基础技术、进阶技能、架构设计和Java技术领域动态等。
目录
相关文章推荐
ImportNew  ·  GitHub 第 10 ... ·  20 小时前  
芋道源码  ·  API key 和 token 有什么区别? ·  昨天  
ImportNew  ·  苹果抛弃 Java!转用 Swift ... ·  2 天前  
程序员晓梦  ·  卧槽!又是一个Java神器! ·  2 天前  
程序员晓梦  ·  卧槽!又是一个Java神器! ·  2 天前  
51好读  ›  专栏  ›  ImportNew

Java 10 新特性解密,引入类型推断机制

ImportNew  · 公众号  · Java  · 2017-12-11 16:00

正文

请到「今天看啥」查看全文



与之前的JDK版本一样,对于即将到来的JDK 10也有一些主要特性。这些特性可以分为两个主要类别:(1)目标发布,(2)建议发布。前者表示某些特性已计划在JDK 10中发布,后一种类型表示这些特性还需要增加支持和成熟度。一旦条件允许,它就可以升级为一个目标发布状态。


目标发布


目前有两个主要功能针对JDK 10:


局部变量类型推断,这将删除大部分对象实例化所需的冗长的包含手动类型信息


整合源树source tree的JDK库,即不同的JDK库将被合并成一个单一的存储库。


1. 局部变量类型推断


强类型编程语言有很多优点,包括在编译时发现类型错误,但是它们也引入了大量的样板代码,特别是在定义局部变量时。例如,当我们希望实例化一个对象时,我们被迫在赋值的左侧提供显式类型,并在赋值的右边提供实现类型,如下面的片段所示:


MyObject value = new MyObject();


但是,当这个过程重复出现大量任务时,对象实例化可能变得令人沮丧和乏味。许多最流行的强类型的编程语言,比如C++, C#以及Go,在定义过程中,提供一种局部变量类型推断的功能(例如C++提供了auto 关键字,C#提供var关键字)。但是,Java仍缺乏这样的功能,它要求开发人员显式声明变量的预期清单类型。


为了解决这个问题,Java开发工具包(JDK)改进建议(JEP)286提出了一个上下文敏感的关键字var,允许局部变量被以下方式初始化:


var value = new MyObject();

var list = new ArrayList ();


由于var关键字是上下文敏感的,它的使用有下面的规则定义:


代码使用var作为一个变量、方法或包名称时将不受影响;而使用var作为类或接口名称的代码将受到影响。


同样,类型推断将受到以下方式的约束:







请到「今天看啥」查看全文