@Data、@NoArgsConstructor和@AllArgsConstructor这三个Lombok注解的含义

@Data@NoArgsConstructor@AllArgsConstructor这三个Lombok注解的含义:

  1. @Data:
    • @Data注解是一个便捷的注解,它结合了以下注解的功能:@ToString@EqualsAndHashCode@Getter(对于所有字段,包括私有字段)、@Setter(对于非final字段)。简而言之,它自动为你的类生成了toString()、equals(Object other)、hashCode()方法和所有字段的getter和setter方法。
    • 但是,@Data注解不会为你的类生成任何构造函数。
  2. @NoArgsConstructor:
    • @NoArgsConstructor注解为你的类生成一个无参构造函数。这在某些情况下是必需的,比如在使用像Hibernate这样的ORM框架时,它们需要能够通过无参构造函数来实例化对象。
    • 如果你已经使用了@Data注解,但你还需要一个无参构造函数,那么你应该显式地添加@NoArgsConstructor注解。
  3. @AllArgsConstructor:
    • @AllArgsConstructor注解为你的类生成一个包含所有字段作为参数的构造函数。这在某些情况下很有用,比如当你想要通过构造函数直接初始化对象的所有字段时。
    • 同样,如果你已经使用了@Data注解,但你还需要一个全参构造函数,你应该显式地添加@AllArgsConstructor注解。

重要注意

  • 当你在同一个类上同时使用@Data@NoArgsConstructor@AllArgsConstructor时,你需要小心处理字段的初始化。特别是,如果你使用了final字段或带有@NonNull注解的字段,并且你希望通过构造函数来初始化它们,那么你应该使用@RequiredArgsConstructor而不是@AllArgsConstructor,因为@RequiredArgsConstructor只会为必需的字段(即final字段和带有@NonNull注解的字段)生成构造函数参数。
  • 另外,如果你同时使用了@Data@AllArgsConstructor(或@NoArgsConstructor@AllArgsConstructor),并且类中有final字段,那么Lombok可能会因为final字段的初始化问题而报错,因为@Data生成的setter方法将无法修改final字段的值。在这种情况下,你可能需要自定义你的构造函数或使用@RequiredArgsConstructor
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值