Java16新特性 record类 和 instanceof模式匹配,多行代码块

本文介绍了Java 16的新特性,包括record类的使用,它是一个自动生成equals、hashCode和toString等方法的final类。另外,文章还探讨了instanceof模式匹配的改进,允许直接使用模式变量,简化了代码。此外,Java 16引入了多行代码块的便捷写法,使得多行字符串的编写更加方便。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java 16新特性 record类 和 instanceof模式匹配,多行代码块

  1. 记录类型本质上也是一个普通的类,不过是final类型且继承自java.lang.Record抽象类的,它会在编译时,会自动编译出 public get hashcode 、equals、toString 等方法

record 类

//Java 16 新特性record 
record Account(String username, String password) {  //直接把字段写在括号中

}

record 类的使用

 public static void main(String[] args) {
        var a = new Account("karl", "123456");
        var a1 = new Account("karl", "123456");
        System.out.println(a.username());//karl
        System.out.println(a.password());//123456
        System.out.println(a.toString());//Account[username=karl, password=123456]
        System.out.println(a.equals(a1));//true
    }

instanceof 模式匹配

  1. 之前我们一直都是采用这种先判断类型,然后类型转换,最后才能使用的方式
  2. 新版本我们可以直接将student替换为模式变量:
@Test
    public void test1() {
        Peo p = new Stu();
        //        新版本的写法
        if (p instanceof Stu stu2) {
            stu2.study();
        }
        //        老版本的写法
        if (p instanceof Stu) {
            Stu stu = (Stu) p;
            stu.study();
        }
    }
class Peo { }//父类
class Stu extends Peo {
    public void study() {
        System.out.println("学生学习");
    }
}

多行代码块
新版本直接用"““多行字符串””" 不用转义字符

@Test
    public void test2() {
//        """多行字符串""" 不用转义字符
//        新版本
        var st = """
                select * from emp
                where id = 1
                """;
//        老版本
        var st1 ="select * from emp\n where id = 1";
        System.out.println(st);
        System.out.println(st1);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值