Jos*_*z_2 21 java constructor lombok
我有一个带@Data注释的类,但我不确定是否生成了带有参数的构造函数,或者只有生成的构造函数是来自vanilla Java的默认构造函数(无参数).
Jos*_*z_2 31
@RequiredArgsConstructor如果没有定义构造函数,将生成A.
该项目龙目岛@Data页解释:
@Data是像具有隐含@Getter,@Setter,@ToString,@EqualsAndHashCode和@RequiredArgsConstructor在类注解(不同之处在于,如果任何明确写入构造不存在的构造会产生).
小智 5
@Data仅创建一个@RequiredArgsConstructor。Lombok文档站点的数据注释和构造函数说明:
@RequiredArgsConstructor为需要特殊处理的每个字段生成一个带有1个参数的构造函数。所有未初始化的final字段都会获取一个参数,以及所有未声明其位置的,标为@NonNull的字段。对于标有@NonNull的那些字段,还将生成显式的null检查。如果用于@NonNull标记的字段的任何参数包含null,则构造方法将抛出NullPointerException。参数的顺序与字段在类中出现的顺序匹配。
假设您有一个使用Lombok @Data批注的POJO:
public @Data class Z {
private String x;
private String y;
}
Run Code Online (Sandbox Code Playgroud)
您不能将对象创建为Z z = new Z(x,y),因为Z类上没有“必需”的arg。它正在使用零参数创建构造函数,因为@Data为您提供了属性的Setters和Getters,并且您可以在创建实例后调用setX和setY。
您可以将x和y设为@NonNull或final,以便它们必须通过构造函数传递,或使用@AllArgsConstructor注释类Z。
| 归档时间: |
|
| 查看次数: |
21338 次 |
| 最近记录: |