【java】record类记录类

record类是Java14引入的新特性,用于简化不可变类的创建。它提供了一个紧凑的构造函数,并自动生成getter方法、equals(),hashCode()和toString()。不变类是其实例创建后成员变量不可变的类,通常要求类和所有字段为final。使用不变类能确保数据安全,常见于创建常量或元组。文章讨论了如何定义和使用record类以及不变类的最佳实践。

https://www.liaoxuefeng.com/wiki/1252599548343744/1331429187256353

record类的作用是?

代替以前需要自定义的不变类(java14引入

用法?

public record Greeting(long id, String content) { }

可以编写Compact Constructor对参数进行验证;

public final class Point extends Record {
    public Point(int x, int y) {
        // 这是我们编写的Compact Constructor:
        if (x < 0 || y < 0) {
            throw new IllegalArgumentException();
        }
        // 这是编译器继续生成的赋值代码:
        this.x = x;
        this.y = y;
    }
    ...
}

可以定义静态方法。一种常用的静态方法是of()方法,用来创建Point:

public record Point(int x, int y) {
    public static Point of() {
        return new Point(0, 0);
    }
    public static Point of(int x, int y) {
        return new Point(x, y);
    }

不变类的特点是?

不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值,也就是不能改变对象的状态。

一个不变类具有以下特点:

  • 定义class时使用final,无法派生子类;
  • 每个字段使用final,保证创建实例后无法修改任何字段。

https://tobebetterjavaer.com/basic-extra-meal/immutable.html

什么时候用不变类?

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值