lombok使用教程
lombok使用教程
Lombok 是一个用于简化 Java 编程的库,它通过注解来自动生成样板代码,从而减少了手动编写样板代码的繁琐。
@Getter 和 @Setter
自动为类中的字段生成 getter 和 setter 方法。
@Getter和@Setter不具有可选参数。它们的作用是生成 getter 和 setter 方法,默认生成所有字段的 getter 和 setter。
@ToString
自动生成
toString()方法。
- **
includeFieldNames**:是否包括字段名。- 默认值:
false - 作用:设置为
true时,生成的toString()方法会包含字段名,例如"Person(name=John, age=30)"。
- 默认值:
- **
exclude**:排除某些字段。- 默认值:空数组
- 作用:指定要排除在
toString()方法中的字段。例如,@ToString(exclude = "age")将排除age字段。
- **
callSuper**:是否调用父类的toString()方法。- 默认值:
false - 作用:设置为
true时,会调用父类的toString()方法。如果父类的toString()方法有意义,这样做可能会更完整。
- 默认值:
@EqualsAndHashCode
自动生成
equals()和hashCode()方法。
- **
exclude**:排除某些字段。- 默认值:空数组
- 作用:指定在
equals()和hashCode()方法中排除的字段。例如,@EqualsAndHashCode(exclude = "age")将排除age字段。
- **
callSuper**:是否调用父类的equals()和hashCode()方法。- 默认值:
false - 作用:设置为
true时,会调用父类的equals()和hashCode()方法。如果父类的实现有意义,这样做可能会更完整。
- 默认值:
@NoArgsConstructor, @AllArgsConstructor, 和 @RequiredArgsConstructor
自动生成构造函数
@NoArgsConstructor- **
access**:构造函数的访问级别。- 默认值:
AccessLevel.PUBLIC - 作用:可以设置为
PRIVATE、PROTECTED或PUBLIC,决定生成的构造函数的访问级别。
- 默认值:
- **
@AllArgsConstructor- **
access**:构造函数的访问级别。- 默认值:
AccessLevel.PUBLIC - 作用:可以设置为
PRIVATE、PROTECTED或PUBLIC,决定生成的构造函数的访问级别。
- 默认值:
- **
@RequiredArgsConstructor- **
access**:构造函数的访问级别。- 默认值:
AccessLevel.PUBLIC - 作用:可以设置为
PRIVATE、PROTECTED或PUBLIC,决定生成的构造函数的访问级别。
- 默认值:
- **
@Builder
简化 Builder 模式的实现。
- **
builderClassName**:生成的 Builder 类的名称。- 默认值:
"Builder" - 作用:可以指定自定义的 Builder 类名,例如
builderClassName = "CustomBuilder"。
- 默认值:
- **
builderMethodName**:生成的 Builder 方法名称。- 默认值:
"builder" - 作用:可以指定自定义的 Builder 方法名称,例如
builderMethodName = "create"。
- 默认值:
- **
buildMethodName**:生成的构建方法名称。- 默认值:
"build" - 作用:可以指定自定义的构建方法名称,例如
buildMethodName = "create"。
- 默认值:
- **
toBuilder**:生成toBuilder()方法,用于从现有对象创建一个 Builder。- 默认值:
false - 作用:设置为
true时,会生成toBuilder()方法,允许从现有对象创建一个新的 Builder。
- 默认值:
代码示例:
1 | import lombok.Builder; |
1 | public class Main { |
@Data
组合了
@Getter,@Setter,@ToString,@EqualsAndHashCode, 和@RequiredArgsConstructor注解,适用于需要所有这些功能的场景。
@Data注解没有独立的可选参数。它是组合注解,包含@Getter、@Setter、@ToString、@EqualsAndHashCode和@RequiredArgsConstructor。
@Value
主要用于不可变类,如枚举类等
@Value注解没有独立的可选参数。它是不可变类的组合注解,包含@Getter、@ToString、@EqualsAndHashCode和一个构造函数,字段被设置为final。
@Singular
@Singular注解没有独立的可选参数。它是用于在 Builder 模式中处理集合和映射字段的注解。- 简化
Builder模式中集合和映射字段的处理。使用@Singular可以让你方便地在构建对象时,逐个添加集合或映射的元素,而不需要一次性提供完整的集合或映射。
- 对集合字段:生成用于添加单个元素的方法,而不是一次性传递整个集合。
- 对映射字段:生成用于添加单个键值对的方法,而不是一次性传递整个映射。
1 | import lombok.Builder; |
1 | public class Main { |
@Slf4j, @Log4j2, @Log, @CommonsLog
自动生成日志记录器。
@Slf4j,@Log4j2,@Log,@CommonsLog注解没有独立的可选参数。它们用于自动生成不同类型的日志记录器。
@SneakyThrows
@SneakyThrows注解没有独立的可选参数。它用于在方法中处理受检异常,无需显式声明或捕获异常。
@NonNull
@NonNull注解没有独立的可选参数。它用于标记字段和方法参数为不允许null,在构造函数中自动插入null检查。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CautionX!
