Java 14新添加的这个record的应用场景是什么

record可以快速生成一个类,并且具有getter和AllArgsConstructor的功能,但是却没有set方法,属性值不可修改。它的主要应用场景是什么?

public record User(String userName, String address, Integer age) { }

截图

好像就是类似enum枚举类

不是枚举。只是简单的“数据对象”,只用来存储数据

你只需要定义对象的字段,它会“自动地生成” 字段的getter/setter方法,生成构造函数,自动复写equals。。。等等。

类似于Lombok干的活儿,用Record 就可以替代了。

只有getter,没有setter,也没有无参构造

1 Like

哦对对,默认是final的,无参构造我忘记了。我还没用过这个东西,有点别扭。

DataClass

record 关键字是用于创建简单的、不可变的数据类型的。它可以用来定义一个类,这个类中只包含一些简单的属性,并且通常不包含任何行为(方法)。一个 record 实例表示一个由属性值组成的结构数据,类似于一个元组。

例如,你可以使用 record 定义一个表示用户信息的类,如下所示:

Copy code

public record User(String name, String email) {}

这个 User 类只包含两个属性: nameemail 。由于 record 定义的类是不可变的,所以它的属性也是不可变的。

当你使用 record 来定义一个类时,你不需要实现任何方法。例如,上面的 User 类中并没有 getName 方法,但是你可以直接通过下面的方式来访问它的 name 属性:

Copy code

User user = new User("Alice", "alice@example.com");
String name = user.name();

与传统的类定义相比, record 的优点在于它能够更简单、更清晰地表示一组数据。你可以使用它来定义领域模型中经常使用的数据类型,例如表示坐标、电话号码、日期等信息的类。另外,由于 record 类是不可变的,所以它们更加安全,避免了混淆数据类型的属性值的风险。

总的来说, record 关键字的主要用途是用于定义简单的、不可变的数据类型。它能够让你更简单、更清晰地表示一组数据,并且提供了一些编译时和运行时的优点。你可以在领域模型中使用 record 来定义经常使用的数据类型,也可以在其他场景中使用它来简化类的定义。

懂了,谢谢 :handshake: