• 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; }.

  • 相关阅读:
    字符串数组和字符串的转换
    项目总结3
    解决几种中文乱码的问题
    ipms的sql语句
    ipms综合管理系统的总结2
    ipms综合管理系统的总结
    简答题汇总
    log4net根据日志类型写入到不同的文件中
    NUnit单元测试初试
    log4net
  • 原文地址:https://www.cnblogs.com/huanglog/p/10435714.html
Copyright © 2020-2023  润新知