Java10-12的新特性解析

本文概述了Java从10到12的主要新特性,包括局部变量自动类型推断(var),lambda表达式的var语法增强,javac/java命令集成,简洁的switch语法,以及instanceof的改进。这些更新旨在提高代码效率和可读性。

Java10新特性(2018年3月)

1、局部变量的自动类型推断(var)
Java10带来了一个新的语法:var,它可以自动推断 局部变量的类型,以后再也不用写类型了,也不用靠Lombok的var注解增强了,var message = "Hello, Java 10";不过这个编译之后还是有类型的,使用时要优先考虑一下可维护性的问题。

Java11新特性(2018年9月)

1、lambda中的自动类型推断(var)
Java11中对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");

2、javac+java命令一体化
之前编译一个Java文件时需要先编译(javac),后执行(Java),现在可以如下直接操作:

$ java HelloWorld.java
Hello Java 11!

3、Java Flight Recorder登录了OpenJDK

Java Flight Recorder是一个非常好用的调试诊断工具,不过之前是在Oracle JDK中,现在Java11也开源了,OpenJDK现在也可以使用了。

Java12新特性(2019年3月)

1、更简洁的switch语法
在之前的Java版本中是如下所示的:

DayOfWeek dayOfWeek = LocalDate.now().getDayOfWeek();
String typeOfDay = "";
switch (dayOfWeek) {
    case MONDAY:
    case TUESDAY:
    case WEDNESDAY:
    case THURSDAY:
    case FRIDAY:
        typeOfDay = "Working Day";
        break;
    case SATURDAY:
    case SUNDAY:
        typeOfDay = "Day Off";
}

现在可以这样使用了:

typeOfDay = switch (dayOfWeek) {
    case MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY -> "Working Day";
    case SATURDAY, SUNDAY -> "Day Off";
};

2、instanceof + 类型转换一步到位:
在之前的版本处理动态类型碰上需要强转的时候,需要先instanceof判断一下,然后在转换:


Object obj = "Hello Java 12!";
if (obj instanceof String) {
    String s = (String) obj;
    int length = s.length();
}

现在instanceof支持直接类型转换了,如下:


Object obj = "Hello Java 12!";
if (obj instanceof String str) {
    int length = str.length();
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

皮皮虾骑着皮皮狗

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

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

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

打赏作者

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

抵扣说明:

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

余额充值