java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java Record

Java Record的实现示例

作者:禾小西

本文主要介绍了Java Record的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、Record 的诞生背景

Java 的 Record(记录类)是 Java 14 引入的预览特性,于 Java 16 正式标准化。其设计初衷是简化不可变数据类的定义,解决传统 POJO 类中大量样板代码(如构造器、getter、equals、hashCode、toString 等)的问题。例如,一个简单的 Person 类在传统写法中需要 30+ 行代码,而用 Record 只需一行。

传统类 vs Record 类:

// 传统 POJO(30+ 行)
public class Person {
    private final int id;
    private final String name;
    // 构造器、getter、equals、hashCode、toString...
}

// Record 等效实现(1 行)
public record Person(int id, String name) {}

通过 Record,开发者可以专注于数据本身,而非重复的模板代码。

二、Record 的核心特性

三、Record 的基本用法

1. 定义与实例化

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

// 实例化
User user = new User("Alice", "alice@example.com");
System.out.println(user.username()); // 输出 "Alice"

2. 自定义方法

Record 允许添加自定义方法:

public record Circle(double radius) {
    // 计算面积
    public double area() {
        return Math.PI * radius * radius;
    }
}

3. 参数校验(紧凑构造器)

通过紧凑构造器实现字段校验:

public record Email(String address) {
    public Email {
        if (!address.contains("@")) {
            throw new IllegalArgumentException("Invalid email");
        }
    }
}

4. 实现接口与泛型

Record 可以实现接口,支持泛型:

public record Pair<T, U>(T first, U second) implements Serializable {
    public String toJson() {
        return "{ \"first\": \"" + first + "\", \"second\": \"" + second + "\" }";
    }
}

四、Record 的进阶应用

五、Record 与 Lombok 的对比

特性RecordLombok
不可变性默认支持需手动添加 final
代码生成语言原生支持依赖注解处理器
模式匹配完全兼容不支持
兼容性需 JDK 16+兼容旧版本
可变性不可变支持可变类(如 @Data

选择建议:

六、注意事项

七、未来展望

总结

Java Record 通过极简语法和不可变性,显著减少了数据类的样板代码,同时提升了代码安全性和可维护性。其适用于 DTO、模式匹配、函数式编程等场景。

到此这篇关于Java Record的实现示例的文章就介绍到这了,更多相关Java Record内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文