Java 14的record是专为纯数据、无行为、不可变场景设计的语言级类型,天然适配DTO等载体,序列化、反射、泛型均获原生支持,无需Lombok或显式注解,但不可用作JPA实体。

Java 14起引入的record不是语法糖,而是专为“纯数据、无行为、不可变”场景设计的语言级类型。它天然适配现代API开发中对DTO、响应体、配置参数等载体的需求,且在序列化、反射、泛型等关键API层面获得直接支持,无需额外配置。
序列化框架开箱即用
主流JSON库(如Jackson、Gson)和XML工具(如JAXB)默认识别record结构:字段名即组件名,类型即声明类型,自动完成双向转换。
- 无需
@Data、@Getter等Lombok注解——record本身已生成访问器(如name()而非getName()) - 无需
@JsonProperty或@XmlElement显式标注——字段顺序与构造参数一致,命名直连 - 反序列化时,框架按名称匹配组件,失败则抛
JsonMappingException,语义清晰
反射API能安全读取但不可修改
record字段全部是public final,通过getDeclaredFields()可直接获取;但因不可变性约束,反射设值(set())会抛IllegalAccessException。
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
- 适合只读分析场景:如自动生成OpenAPI文档、校验字段非空、构建通用日志模板
- 不支持运行时动态赋值,避免破坏不可变契约
-
Constructor和Method(如toString())均可正常获取并调用
泛型与函数式API无缝集成
record可作为泛型类型参数、方法返回值、Stream元素或Lambda入参,JVM和编译器全程支持类型擦除与推断。
- 常见写法:
record Result,用作统一响应封装(int code, String msg, T data) {} - 配合
Stream.of(new Result流畅处理(200, "OK", "done")) - 在函数式接口中作为参数(如
Consumer),IDE自动补全字段访问
与Spring等主流框架协同良好
Spring Boot 2.6+、Micrometer、Spring Data JDBC等已适配record,但需注意边界:
- Controller层返回
record作为@ResponseBody,Jackson自动序列化 - 不能用作JPA实体(不支持继承、无setter、无无参构造器)
- 可作为
@RequestBody接收参数,但复杂校验建议用紧凑构造函数内联实现
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










