爽呀,JDK17里面可以使用的神仙语法(二)

平台奖励创作,可能会升级VIP文章,可以移步我的公众号:【编程朝花夕拾】,且可获取首发内容。

01 引言

接上一期,我们继续介绍有趣的神仙语法。

02 神仙语法

2.1 Try-with-resources 增强

Try-with-resources 允许有效地使用最终变量,该增强来自JDK9。Try-with-resources 自动帮我们关闭流的资源,防止遗忘造成资源浪费。

JDK9之前,只能这样写,写在外面会编译不通过:

try (FileInputStream fis = new FileInputStream("test.txt")) {
    // ...
}      

JDK之后,可以使用外部的流:

FileInputStream fis = new FileInputStream("test.txt");
try (fis) {
    // ...
}

看似简单的改变,但是在平时编码中会变的很方面,代码也会显的整齐。

2.2 instanceof 模式匹配

该方法用来判断是不是属于某一种类型,常用于多态中。如果是就可以强制转换。现在就可以不需要显式的强制转化了。该功能来自JDK16。

JDK16之前的类型转化:

Object a = 1;
if (a instanceof Integer) {
    Integer aa = (Integer) a;
    System.out.println(aa + 1);
    // 打印结果:2
}

JDK16之后的类型转化:

Object a = 1;
if (a instanceof Integer aa) {
    System.out.println(aa + 1);
     // 打印结果:2
}

是不是又省了一行代码,哈哈

2.3 更友好的空指针异常信息

空指针(NullPointerException)简称NPE。这个异常是每个开发都会遇到的异常,因为数据的缺失,直接调用方法,就是出现NPE, 尤其在链式调用的,根本无法确定是哪一个方便导致的NPE。JDK15里面正式优化。

JDK15之前的NPE

Test test = new Test();
System.out.println(test.getContent().length());

报错信息只有行数,没有更加详细的信息;

JDK15之后的NPE报错,直接告诉是哪一个字段。

这个报错提示简直就是开发者的福音了,可以迅速定位NPE的位置。

2.4 Record 类型

定义不可变类,用于快速构造一个类,只对外提供Getter方法,不需要GetterSetter方法。笔者最先接触还是在Scala的语法中认识的,看来Java是吸收了Scala的一部分思想。该方法来自JDK16.

@Test
void test07() {
    record Location(int x, int y){}

    Location location = new Location(5,9);
    System.out.println(location);
    System.out.println(location.x());
    System.out.println(location.x);
    System.out.println(location.y());
    System.out.println(location.y);
}

运行结果:

是不是比平时定义的类方便太多。

2.5 var关键字

var是Java 10中引入的一个新特性,用于局部变量类型推断,它允许编译器在编译时自动推断变量的类型,从而简化代码书写和增强代码可读性。最开始接触适用于JS的语言中,现在Java也可以使用了。

var list = List.of(1, 2, 3, 4, 1);
var str = RandomUtil.randomInt(5);

它会根据上下文判断接受的变量是什么属性。

03 小结

今天的语法就分享到这里。后面在总结一些语法,我们接着唠。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智_永无止境

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

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

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

打赏作者

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

抵扣说明:

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

余额充值