一文快速了解 Java 9 - 16 新特性,网友:卷不动了?

JAVA 这几年的更新实在是太太太……快了,JAVA 8 都还没用多久,16 都已经发布了。自从 JAVA 8 发布了 Lambda 和 Stream 之后,JAVA 就像打了鸡血一样,半年一个版本的发布,生产队的驴也没这么勤快。

在这里插入图片描述

导致我们现在完全跟不上 JAVA 发布的节奏,我司目前还停留在 JAVA 8,甚至部分老系统还在使用 JAVA 7,根本不能轻易的升级。

不过虽然暂时用不上最新版本的 JAVA,但了解每个新版本的主要特性还是很重要的,不然哪天真跟着升级了,那还不得一脸懵逼。

本文就带你快速了解 JAVA 9 - 16 的主要新特性,早学完早下班!

JAVA 9(2017年9月)

JAVA 8 对接口增加了默认方法的支持,在 JAVA 9 中对该功能又来了一次升级,现在可以在接口里定义私有方法,然后在默认方法里调用接口的私有方法。​

这样一来,既可以重用私有方法里的代码,又可以不公开代码



public interface TestInterface {
    default void wrapMethod(){
        innerMethod();
    }
    private void innerMethod(){
        System.out.println("");
    }
}

匿名内部类也JAVA 5 就引入了泛型(generic),到了 JAVA 7 开始支持钻石(diamond)运算符:<>,可以自动推断泛型的类型:支持钻石(diamond)运算符

List<Integer> numbers = new ArrayList<>();

但是这个自动推断类型的钻石运算符可不支持匿名内部类,在 JAVA 9 中也对匿名内部类做了支持:

List<Integer> numbers = new ArrayList<>() {
    ...
}

增强的 try-with-resources
JAVA 7 中增加了try-with-resources的支持,可以自动关闭资源:

try (BufferedReader bufferReader = new BufferedReader(...)) {
    return bufferReader.readLine();
}

JAVA 9 中对这个功能进行了增强,可以引用 try 代码块之外的变量来自动关闭:

	BufferedReader bufferReader0 = new BufferedReader(...);
BufferedReader bufferReader1 = new BufferedReader(...);
try (bufferReader0; bufferReader1) {
    System.out.println(br1.readLine() + br2.readLine());
}

JAVA 10(2018年3月)

局部变量的自动类型推断(var)
JAVA 10 带来了一个很有意思的语法 - var,它可以自动推断局部变量的类型,以后再也不用写类型了,也不用靠 lombok 的 var 注解增强了

var message = "Hello, Java 10";

不过这个只是语法糖,编译后变量还是有类型的,使用时还是考虑下可维护性的问题,不然写多了可就成 JavaScript 风格了

JAVA 11(2018年9月)

Lambda 中的自动类型推断(var)
JAVA 11 中对 Lambda 语法也支持了 var 这个自动类型推断的变量,通过 var 变量还可以增加额外的注解:

List<String> languages = Arrays.asList("Java", "Groovy");
String language = sampleList.stream()
  .map((@Nonnull var x) -> x.toUpperCase())
  .collect(Collectors.joining(", "));

assertThat(language).isEqualTo("Java, Groovy");

javac + java 命令一把梭
以前编译一个 java 文件时,需要先 javac 编译为 class,然后再用 java 执行,现在可以一把梭了:
Java Flight Recorder 登陆 OpenJDK
Java Flight Recorder 是个灰常好用的调试诊断工具,不过之前是在 Oracle JDK 中,也跟着 JDK 11 开源了,OpenJDK 这下也可以用这个功能,真香~

原文链接https://juejin.cn/post/6964543834747322405
作者空无

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐洋QuQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值