文章目录
《Lombok 实战 —— @Data & @Value》
All together now: A shortcut for
@ToString
,@EqualsAndHashCode
,@Getter
on all fields,@Setter
on all non-final fields, and@RequiredArgsConstructor
!
1. @Data
1.1 @Data 实战使用
@Data
是一个方便的快捷方式注释,它将@ToString
,@EqualsAndHashCode
,@Getter/@Setter
和@RequiredArgsConstructor
的特性捆绑在一起。换句话说,@Data生成通常与简单POJOs
和beans
配合使用,它会进行以下操作:
- 生成所有字段的
getter
,所有非final
字段的setter
, - 实现相应类字段的
toString
,equals
,和hashCode
, - 构造方法将初始化所有没有初始化值的
final
字段,和所有使用@NonNull
标记却没有初始化值的非final字段,从而确保字段永远不为空。
估计你听着会有点绕,先来一个小菜常常鲜!
@Data
public class User {
private final Integer id;
private final String zipCode = "215500";
@NonNull
private String username;
private String password;
}
// 编译后:
public class User {
private final Integer id;
private final String zipCode = "215500";
@NonNull
private String username;
private String password;
// 生成带有未初始化的 final 字段,以及标有 @NonNull 的字段
public User(Integer id, @NonNull String username) {
if (username == null) {
throw new NullPointerException("username is marked @NonNull but is null");
} else {
this.