lombok基础使用

前言

  Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。使用注解更优雅的编码,也能减少开发中重复造轮子。本文将介绍lombok的基础注解及参数含义。

@Getter

可选元素:

修饰符和类型可选元素描述
boolean lazy  
Getter.AnyAnnotation[] onMethod 这里列出的任何注释都放在生成的方法上。
AccessLevel value 如果你想让你的getter不公开,你可以在这里指定一个替代访问级别。

使用示例:

 @Getter(
     lazy = true,
     onMethod = @_({@JsonIgnore}),
     value = AccessLevel.PROTECTED
 )
 private final String name = "";

说明:

  • Lazy:默认为:false,如果设置 lazy 则 该属性必须为 final

  • onMethod:默认为{},此处出现的注解会在生成的方法上面,最常见的使用是结合JackJson,做序列化标注

    • JDK7-:@Getter(onMethod=@__({@AnnotationsGoHere}))
    • JDK8+:@Getter(onMethod_={@AnnotationsGohere})//注意后面的下划线onMethod
  • AccessLevel:默认为AccessLevel.PUBLIC 可以手动修改方法的访问级别,配置参数为 枚举类:AccessLevel中属性

@Setter

可选元素

修饰符和类型可选元素描述
Setter.AnyAnnotation[] onMethod 这里列出的任何注释都放在生成的方法上。
Setter.AnyAnnotation[] onParam 这里列出的任何注释都放在生成的方法参数上。
AccessLevel value 如果你希望你的setter是非公开的,你可以在这里指定一个替代访问级别。

使用示例:

@Setter(value = AccessLevel.PRIVATE)
private String trueName;

说明:

  • 该属性配置和@Getter 经常结合使用

  • onParam :该属性为参数的注解,此处可以和@NotNull 配合使用控制参数不为空,该属性配置同 onMethod

@NonNull

可选元素:无

使用示例:

@NonNull private String trueName;
private String getTrueName(@NonNull String name)

说明:

  • 该注解可以用在 字段、方法、参数 上 常见用于 字段 和 参数
  • 如果是字段注解,那么生成的get 、构造方法 都会进行 null 检测
  • 如果是参数注解,在方法的开头会加入一个空值检测。
  • 该注解检测到空值后会抛出NullPointerException

@ToString

可选元素

修饰符和类型可选元素描述
boolean callSuper toString在输出中包含超类实现的结果。
boolean doNotUseGetters 通常情况下,如果 getters是可用的,那么被调用。
java.lang.String[] exclude 这里列出的任何字段将不会被打印在生成的toString实现中。
boolean includeFieldNames 在打印时包括每个字段的名称。
java.lang.String[] of 如果存在,明确列出要打印的字段。

调用示例:

@ToString(callSuper = true, exclude = {"id"})
@Data
public class TestModel {
    private int id;
    private String trueName;
}

说明:

  • callSuper:默认false
  • doNotUseGetters:默认false 也就是会调用 get 方法
  • exclude: 默认为空
  • includeFieldNames:默认为true 会打印字段名称
  • of:默认为全部字段,即打印全部字段

@EqualsAndHashCode

可选元素

修饰符和类型可选元素描述
boolean callSuper 调用超类的实现equals,并hashCode计算对该类中的字段值。
boolean doNotUseGetters 通常情况下,如果getter是可用的,那么被调用。
java.lang.String[] exclude 这里列出的任何字段在生成equalshashCode实现中都不会被考虑在内。
java.lang.String[] of 如果存在,则明确列出要用于身份的字段。
EqualsAndHashCode.AnyAnnotation[] onParam 这里列出的任何注释都放在的生成的参数equalscanEqual

调用示例

@EqualsAndHashCode
public class TestModel {
    private int id;
    private String trueName;
}

说明:

  • callSuper :默认false

  • doNotUseGetters:默认false 也就是会调用 get 方法

  • exclude:默认为空

  • of:默认为全部字段

  • onParam:该注解用以 在传入的Object object 参数注解

@AllArgsConstructor

可选元素

修饰符和类型可选元素描述
AccessLevel access 设置构造函数的访问级别。
AllArgsConstructor.AnyAnnotation[] onConstructor 这里列出的任何注释都放在生成的构造函数中。
java.lang.String staticName 如果设置,生成的构造函数将是私有的,并且用包装真实构造函数的相同参数列表生成额外的静态“构造函数”。

说明:生成一个全指标构造函数。全参数构造函数需要类中每个字段的一个参数。

@NoArgsConstructor

可选元素

修饰符和类型可选元素描述
AccessLevel access 设置构造函数的访问级别。
boolean force 如果true,将所有最终字段初始化为0 / null / false。
NoArgsConstructor.AnyAnnotation[] onConstructor 这里列出的任何注释都放在生成的构造函数中。
java.lang.String staticName 如果设置,生成的构造函数将是私有的,并且用包装真实构造函数的相同参数列表生成额外的静态“构造函数”。

说明:生成一个无参数的构造函数。如果由于final字段的存在而无法写入这样的构造函数,将会生成错误消息。

@RequiredArgsConstructor

可选元素

修饰符和类型可选元素描述
AccessLevel access 设置构造函数的访问级别。
RequiredArgsConstructor.AnyAnnotation[] onConstructor 这里列出的任何注释都放在生成的构造函数中。
java.lang.String staticName 如果设置,生成的构造函数将是私有的,并且用包装真实构造函数的相同参数列表生成额外的静态“构造函数”。

说明:生成一个具有所需参数的构造函数。必需的参数是final和约束的字段,如@NonNull

@Data

可选元素

修饰符和类型可选元素描述
java.lang.String staticConstructor 如果你指定一个静态构造函数名,那么生成的构造函数将是私有的,而创建一个静态工厂方法,其他类可以用来创建实例。

说明:

  • 相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode

  • 为所有字段生成getter,一个有用的toString方法,以及hashCode和equals实现,用于检查所有非瞬态字段。还将为所有非final字段以及构造函数生成setter。

  • staticConstructor:默认:没有静态构造函数,而是普通的构造函数是公共的。如果你指定一个静态构造函数名,那么生成的构造函数将是私有的,而创建一个静态工厂方法,其他类可以用来创建实例。建议这个名字:“of”,就像这样:public @Data(staticConstructor =“of”)类Point {final int x,y; }.

原文地址:https://www.cnblogs.com/huanglog/p/10435714.html