京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Java 升级产生的鸡肋功能

2025-12-10 14:06| 发布者: 山海天地| 查看: 74| 评论: 0

摘要: 如果说Java 升级产生的鸡肋功能有哪些,“record标识”绝对算一个。Record标识是从JDK16正式发布的功能,record标识的主要作用是为标识的类生成- 全参构造函数- getter方法- equals(), hashCode(), toString()需要注

如果说Java 升级产生的鸡肋功能有哪些,“record标识”绝对算一个。

Record标识是从JDK16正式发布的功能,record标识的主要作用是为标识的类生成

- 全参构造函数

- getter方法

- equals(), hashCode(), toString()

需要注意的是record类为标识类生成的所有字段都是 final 的,无法继承使用

Lombok是一个简化java用户生成bean基础方法的工具,比如构造器,getter setter方法,toString,hashCode,equals等。

Lombok 示例

@Data

public class User {

private String name;

private int age;

}

什么时候用 Record 替代 Lombok?

场景

推荐方案

简单的不可变数据类(DTO、VO)

Record

需要可变对象(setter)

Lombok @Data

需要继承其他类

Lombok(Record不能继承)

需要 Builder 模式

Lombok @Builder

需要日志 @Slf4j

Lombok

需要无参构造函数

Lombok @NoArgsConstructor

Record 不能做的事:

public record User(String name) extends BaseEntity {} // 不能继承类

public record User(String name) { private int age; } // 不能添加实例字段

// Record 的字段都是 final,不能有 setter

不是完全不推荐 Lombok

而是:

  • JDK 16+ 项目:简单的不可变数据类优先用 Record
  • Lombok 仍然适用于:可变对象、需要继承、Builder、日志等场景

如果你的项目已经升级到 JDK 16+,对于 DTO/VO 这类数据载体类,建议优先使用 Record,代码更简洁且是原生支持。

可以看到record标识确实鸡肋,就是因为它没法生成可继承的类和字段,无法添加实例字段。如果想灵活不如自己编写,如果想全面又不如Lombok好用,如果为了统一代码风格谁会同时用两种编码方式呢?


查看详情:https://www.toutiao.com/article/7582106322963841563
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-12-14 16:19 , Processed in 0.033210 second(s), 17 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部