是什么?
Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。
怎么用?
- @Data
包含@ToString, @EqualsAndHashCode, 所有属性的@Getter, 所有non-final属性的@Setter和@RequiredArgsConstructor的组合,通常情况下,基本上使用这些注解就足够了(使用时最好结合结合@EqualsAndHashCode(callSuper = true),具体查看下方注意事项)。
- @Getter / @Setter
可以作用在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter方法。
- @NoArgsConstructor
无参构造
- @AllArgsConstructor
全参构造
- @RequiredArgsConstructor
将标记为@NoNull的属性生成一个构造器,如果运行中标记为@NoNull的属性为null,会抛出空指针异常。
- @ToString
生成所有属性的toString()方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割。
使用参考:简书
-
@EqualsAndHashCode
生成equals()方法和hashCode方法默认情况下,会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode方法,也可以指定具体使用哪些属性。
更多注解使用详情请参考:lombok使用代码对比
特殊的地方
@Value不属于Lombok但是其作用可以与@Data对应,有些区别:
- @Value有参构造,如果变量不加@NonFinal ,@Value会给所有的弄成final的,就只有get方法,没有set方法了。
注意点什么?
- 使用@Data必须结合@EqualsAndHashCode(callSuper = true)