@allargsconstructor 是 lombok 提供的注解,用于在编译期自动生成包含所有非静态字段作为参数的公共构造方法,参数顺序与字段声明顺序一致,支持 exclude 和 access 属性定制。

@AllArgsConstructor 是 Lombok 提供的一个注解,作用是让编译器在编译期自动为类生成一个包含**所有字段(非静态)作为参数**的公共构造方法。
它怎么工作?
你只需在类上添加 @AllArgsConstructor,Lombok 就会在字节码中注入一个构造方法,参数顺序与字段在源码中声明的顺序一致,参数类型和字段类型一一对应。
例如:
import lombok.AllArgsConstructor;
@AllArgsConstructor
public class User {
private String name;
private int age;
private String email;
}
等价于手动写了:
public User(String name, int age, String email) {
this.name = name;
this.age = age;
this.email = email;
}
注意字段可见性与 static 字段
- 只包含 非 static 的字段(static 字段不会出现在参数列表中)
- 字段的访问修饰符不影响生成(private、protected、包级都行)
- 如果字段是 final,构造方法会为其赋值,符合 final 语义
常见配合用法
- 常和 @Data 或 @RequiredArgsConstructor 混用时要注意:Lombok 不允许多个构造方法冲突。若已存在全参构造或手动定义了同签名构造,会编译报错
- 想排除某个字段不参与构造?用 @AllArgsConstructor(exclude = {Field.class})(需 Lombok 1.18.20+)
- 想让构造方法是 private 或 protected?加 @AllArgsConstructor(access = AccessLevel.PROTECTED)
需要确保环境支持
- 项目已引入 Lombok 依赖(Maven/Gradle)
- IDE 已安装并启用 Lombok 插件(如 IntelliJ 需开启 “Enable annotation processing” 和 Lombok plugin)
- 编译时 Lombok agent 或构建插件(如 lombok-maven-plugin)已正确配置(部分 Maven 环境需显式配置)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











