@Builder 无参构造
时间: 2023-10-06 12:13:01 浏览: 76
@Builder注解在使用时,默认会生成一个带参的构造函数和一个builder()方法,但不会生成无参构造函数。这是因为@Builder注解的目的是用于构建复杂对象,而一般情况下复杂对象都需要传入参数进行初始化,因此不提供无参构造函数。
如果你需要使用无参构造函数,可以通过在类上添加@AllArgsConstructor注解来强制生成带参构造函数的同时也生成无参构造函数。例如:
```
@Data
@Builder
@AllArgsConstructor
public class TestBuilder {
private String name;
private Integer age;
}
```
这样就可以同时使用@Data和@Builder注解,并生成无参构造函数。
相关问题
@Builder @NoArgsConstructor @AllArgsConstructor
这是Java中使用的三个注解:@Builder、@NoArgsConstructor 和@AllArgsConstructor。它们都是Lombok库中提供的注解。
- @Builder:@Builder注解可以用于为类生成一个建造者模式的构造器方法。在使用@Builder注解后,Lombok会自动生成一个内部类作为该类的builder,并且为每个字段生成setter方法,从而实现链式调用的方式来创建对象。
- @NoArgsConstructor:@NoArgsConstructor注解用于生成一个无参构造器。当使用该注解时,Lombok会自动生成一个无参构造器,可以让类的实例化更加简便。
- @AllArgsConstructor:@AllArgsConstructor注解用于生成一个包含所有参数的构造器。使用该注解后,Lombok会为类的每个字段生成对应的构造器参数,并在构造器中对字段进行赋值操作。
通过使用这些注解,可以简化代码编写过程,减少冗余代码。
若依框架@Builder
引用[1]中提到,当我们在实体类中使用了@Builder注解时,会生成GET/SET方法,但是无参构造方法会被省略。这可能会导致一些问题,因为很多框架在创建对象时会调用无参构造方法。如果我们直接使用new Student来创建对象,就会报错或者抛出异常。[1]
为了解决这个问题,可以使用@Builder注解结合@AllArgsConstructor和@NoArgsConstructor注解来生成有参构造方法和无参构造方法。具体做法是在实体类上同时添加这三个注解。例如:
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Student {
private Integer id;
private String name;
private String sex;
}
这样,就可以通过@Builder注解来创建Student对象,同时也保留了无参构造方法供框架使用。[2]
另外,@Builder注解的使用方法是在类上添加该注解,它可以帮助我们简化创建对象的过程。例如,引用[3]中的代码片段展示了如何使用@Builder注解来创建Mother对象。[3]