java中Lombok有哪些注解

Lombok 注解用于减少Java样板代码,核心包括:@Data(生成getter/setter/toString/equals/hashCode/有参构造)、@Builder(链式构建)、@ToString与@EqualsAndHashCode(调试比较)、@NonNull(空值校验)等。

Lombok 的注解主要用来减少 Java 中重复、机械的样板代码,尤其适合 POJO、DTO、Entity 等类。常用和实用的注解可以按功能分几类,挑重点说清楚就行。

@Data:最常用的“全能选手”

加在类上,一次性生成:
• 所有字段的 @Getter@Setter
@ToString(打印所有非静态字段)
@EqualsAndHashCode(基于字段生成 equals + hashCode)
@RequiredArgsConstructor(为 final 或 @NonNull 字段生成构造方法)
注意:它不会生成无参构造器,如果需要,得额外加 @NoArgsConstructor

@Getter / @Setter:精细控制访问器

可作用于类或单个字段:
• 类上:为所有非 static 字段生成 getter/setter
• 字段上:只为该字段生成对应方法
• 支持访问级别控制,比如 @Setter(AccessLevel.PROTECTED)
• 可用 @AccessLevel.NONE 显式禁用某个字段的 getter 或 setter

@ToString / @EqualsAndHashCode:调试与比较的关键

这两个常配合使用:
@ToString 默认输出全部字段,可用 @ToString.Exclude

除敏感或大对象字段
@EqualsAndHashCode 默认只基于本类字段,设 callSuper = true 可包含父类字段
• 两者都支持 exclude = {"field1", "field2"} 精确排除

@Builder:链式构建对象的现代写法

加在类上,自动生成 Builder 内部类和 builder() 静态方法:
• 调用方式如 User.builder().name("Tom").age(25).build()
• 支持默认值(用 @Builder.Default)、必填校验(结合 @NonNull
• 比手写 Builder 简洁,比 new + set 更安全、更易读

其他高频实用注解

@NoArgsConstructor / @AllArgsConstructor / @RequiredArgsConstructor:按需生成构造器
@Value:类似 @Data,但把类和字段全设为 final,适合不可变对象
@SneakyThrows:自动处理受检异常,不用写 throws 或 try-catch
@Log4j / @Slf4j:注入日志对象 log,开箱即用
@NonNull:在生成的构造器/方法中自动插入空检查(抛 NullPointerException)

基本上就这些——用好 @Data、@Builder、@ToString 和 @NonNull,日常开发已经覆盖八成场景。不复杂但容易忽略的是:IDE 要装 Lombok 插件,Maven/Gradle 得加依赖,否则编译会报错。