>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 29052 个阅读者 刷新本主题
 * 贴子主题:  Oracle发布了新版本的Java 10 回复文章 点赞(0)  收藏  
作者:sunshine    发表时间:2018-04-07 00:33:16     消息  查看  搜索  好友  邮件  复制  引用

Oracle发布了新版本的Java,即Java 10。这个版本距离Java 9的发布刚刚过去了六个月,和上个版本一样,它也是特性发布版本,其生命周期只有六个月。

随着Java 10的发布,Java 9随即被废止,以后不会再有Java 9的免费支持版本发布。从3月20日开始,Oracle免费支持的Java版本是Java 8和Java 10。下一个长期支持的版本将会是Java 11,预计会在2018年九月份发布。

最终的发布版本与RC1候选版本几乎没有什么差别,从InfoQ 2017年11月报道发布内容之后,Java 10并没有添加什么重要的特性。

关于该版本语言级别的变更,可以通过版本的完整文档和发布说明获取。

对于开发人员来说,一个重要的变更就是新增了var。这是对Java类型推断功能的增强,该特性已被证明比它刚刚出现的时候更为重要。在最简单的场景中,var允许我们按照如下的方式编写代码:

var foo = new ArrayList<String>();
它将推断从值的类型转移到了变量中。

在Java 10中,该特性的实现是通过将var作为保留类型名而不是作为关键字来实现的。这意味着,使用var作为变量名、方法或包名并不会受到影响。

除了简单的场景,它实际上还允许我们使用以前所不允许的编程结构。例如,javac一直允许使用功能非常有限的类型推断形式:

public class Test {
    public static void main(String[] args) {
        (new Object() {
            public void bar() {
                System.out.println("bar!");
            }
        }).bar();
    }
}
在Java 7出现之前,它的功能边界已经被Java社区所知晓。

这种形式的类型推断所面临的问题在于它没有办法实际应用,“具有bar方法的对象”存在于编译器中,但是该类型无法通过变量类型的方式来表述,它并不是可表示的类型。

随着Java 10的发布,变量的类型不再需要明确指定,var能够避免明确表示类型,从而允许我们保留静态的类型信息。这意味着我们可以修改样例代码,编写成如下的样子:

var o = new Object() {
    public void bar() {
        System.out.println("bar!");
    }
};

o.bar();
将var作为“魔力类型”来使用,允许程序员以某种方式保留每次类型推断的类型信息,这不禁让人联想到Java泛型的约束。

关于var如何实现非表示性类型的更高级用法,可以参考该文章。尽管该特性无法满足每个批判者对Java类型系统的质疑,但是它的确代表了一种坚定(可能也是谨慎的)的进步。


程序猿的技术大观园:www.javathinker.net
  Java面向对象编程-->Lambda表达式
  JavaWeb开发-->使用Session(Ⅱ)
  JSP与Hibernate开发-->Java对象持久化技术概述
  Java网络编程-->创建非阻塞的HTTP服务器
  精通Spring-->绑定表单
  Vue3开发-->虚拟DOM和render()函数
  求素数
  java的三种随机数生成方式
  BIO模型的缺陷
  NIO模式的IO多路复用底层原理
  JDK14的新特性
  关于新书
  java 中文繁简体转换工具 opencc4j
  内部类的编程练习题
  java万年历简单制作
  Java设计模式:抽象工厂模式
  Eclipse使用指南:常用视图(View) 的用法
  用BigDecimal进行精确运算的范例
  redis持久化问题处理
  Java入门实用代码:打印平行四边形
  Java入门实用代码: 字符串格式化
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。