java record用法_Java14不得不知的5个新功能

Java14不得不知的5个新功能虽然我们现在还用的JDK8

文本块

以前在Java里写个长点的字符串是这个样子地:String sql = "select * from t_tianlangstudio_student"   + " where age > 23 and age 

如果字符串中再包含有双引号还需要转义,虽然有IDE帮忙,但还是时常羡慕Scala、Rust里的文本块(多行字符串)的写法,那个酸爽,Java14里终于也可以这样写了:public static String  index = """

tianlangstudio

一个不安分的程序员

""";12345678910

是不是清爽多了?

Switch表达式

以前使用switch大概是这个样子地 :public static int  codeDemo(int i)  {

int result;

switch(i) {

case 1:

case 2:

result = 18;

break;

case 3:

result = 28;

break;

default:

result = 100;

break;

}

return result;}12345678910111213141516

现在可以这样写了:public static int code(String s)   {

int result = switch(s) {

case "a"  , "b"   -> 1;

case "c"  -> 2;

default -> 100;

}

return result;}12345678

是不是清爽了很多?Java也开始区分表达式和(声明)语句了?关于表达式和语句可以参考Rust .

不过Rust里更多使用Match,Java14也对模式匹配有了些许支持,主要体现在instanceOf的使用上。

instanceOf

使用instanceOf判断一个变量是否属于某个类型的实例的同时,还能声明一个变量作为当前类型的实例进行更多的判断.就像这个样子:public static void demo(Object obj) {

if (obj instanceof String s && s.length() > 4) {

System.out.println("it is a String and length greater than 4");

}

}12345

没看出哪里不一样了?注意看String s 。可以自行脑补下要使用JDK8编写代码是什么样子的?

record

有没觉得每次定义个(Java类)POJO,需要写大量的get,set方法还得重写equals方法特别麻烦,是不是也想要Scala中的样例类、Rust中的类元组struct那样简洁的类型定义方式?

Java14提供了record,可以这样定义类型了:public static void main(String[] args) {

Person person1 = new Person("Tianlang", 23);

Person person2 = new Person("Tianlang",  23);

System.out.println(person1.equals(person2));  // true}public static record Person(String name, int age){}1234567

就问你清爽不清爽 ?

更有用的空指针异常提示信息

你是否也像我一样经常写链式调用的代码,就像这样:String str = obj.fieldA.fieldAA.fieldAAA;1

这样写起来可以少费几根头发起变量名称,直到出现了空指针异常,异常信息只告诉你那一行出现了空指针,为了调试代码只好类似这样:System.out.println(obj);System.out.println(obj.fieldA);System.out.println(obj.fieldA.fieldAA);String str = obj.fieldA.fieldAA.fieldAAA;1234

是否也曾像我一样从心底升起无数个草泥马. 可能是我们的呼唤起了作用,终于在Java14中会告诉你具体那个代码调用出了空指针。记得要在代码执行时设置:-XX:+ShowCodeDetailsInExceptionMessages

如果你像我一样不想升级JDK又想尝试新的写法也可以考虑新语言如:Scala 或Rust语言.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值