原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9329798.html

Lombok注解解析:

@NonNull
  使用在方法的参数或者构造器的参数上,用于生成null验证。
  Lombok可以识别任何第三方工具的字段上标注的@NonNull名称的注解,并在使用@Data、@AllArgsContruct进行生成方法和构造器时进行null判断。
  而Lombok的@NonNull注解使用在参数之上,仅仅作用到你自定义的方法和构造器之上。
  null判断会采用:

 if (param == null)
throw new NullPointerException("param is marked @NonNull but is null");

  的形式插入,并且会在你方法的开头和构造器的this,super之类的调用之后插入。
@Cleanup
  使用在资源之前,用于表示资源可以被完美自动释放(在代码的执行路径超出资源范围之前)。
  将该注解标注在表示资源的变量之上,比如:@Cleanup InputStream in = new FileInputStream("some/file");
  这样一来,在资源范围结束的位置会自动调用in.close()方法进行资源释放。这个调用会在try...finally...块中调用,来保证调用必定会执行。
  当然,你也可以在注解内部定义释放资源的方法名称,来指定释放资源的具体方法,这适用于没有close()方法的情况下,必须保证这些方法是无参的。
@Getter and @Setter
  标注在字段之上,用于自动生成get、set方法。Boolean类型为is开头。
  生成的get、set方法默认情况之下都是public的,但也可以手动指定范围value=AccessLevel.PUBLIC、AccessLevel.PROTECTED、AccessLevel.PRIVATE、AccessLevel.PRIVATE四种。
  也能标注在类上,表示针对该类中所有的非静态字段进行get、set方法自动生成。
  如果指定某个字段的AccessLevel=AccessLevel.NONE,则可以使该生成动作失效,此时可以手动实现get、set方法,这应用于在这些方法中有一些自定义逻辑的情况下。
@ToString
  标注于类之上,用于生成toString()方法。
  includeFieldNames,默认为true,表示在toString输出时输出字段名称。
  callSuper,默认为false,表示生成toString时不输出超类中的字段内容,若要输出超类中的内容,需要设置为true
  doNotUseGetters,默认为false,表示获取字段值时通过get方法获取,设置为true表示直接通过字段获取
  onlyExplicitlyIncluded,默认为false,表示输出所有非静态字段内容,如果设置为true,则只输出标注有@ToString.Include的字段和方法
@ToString.Include
  标注于字段、方法之上,表示生成toString方法时包含该注解标注的字段和方法,需要与onlyExplicitlyIncluded一起使用。
  rank,默认为0,表示级别,数字越大级别越高,高级别将会优先输出,同级别按照代码顺序输出。
  name,可以为标注的成员(字段或者方法)另起一个名字。
@ToString.Exclude
  标注于字段之上,表示生成toString方法时不包含被该注解标注的字段。那么生成toString方法时会跳过这些字段,
@EqualsAndHashCode
  标注于类之上用于生成hashCode方法和equals方法。
  callSuper,同上
  doNotUseGetters,同上
  onlyExplicitlyIncluded,同上,需要配合@EqualsAndHashCode.Include使用。
@EqualsAndHashCode.Include
  标注于字段或者方法之上,需要与onlyExplicitlyIncluded配合使用,表示将该注解标注的内容添加到实现hashCode和equals方法的内容中去。
@EqualsAndHashCode.Exclude
  标注于字段之上,用于排除不需要参与生成hashCode和equals方法的字段。可单独使用。
@NoArgsConstructor
  用于生成无参构造器,如果类中存在final字段,则会报编译错误。一般结合其他几个构造器注解一起使用提供一个无参构造器,并且不会检查@NonNull标注的字段
  force,默认为false,表示是否针对final字段进行特殊处理,如果将其设置为true,则上面的编译错误将会消失,内部处理为,将final字段初始化为0\false\null
  access,默认为lombok.AccessLevel.PUBLIC,表示public范围的构造器
  staticName,一旦设置该值,则会生成一个静态的“构造器”工厂,其内部包裹着一个私有的构造器,对外提供创建对象的功能,这是明显的工厂模式。
@RequiredArgsConstructor
  用于按照要求生成构造器,所谓的要求就是包含final字段和类似于@NonNull约束标注的字段,会对@NonNull字段进行明确的null检查
  access,同上
  staticName,同上
@AllArgsConstructor
  用于生成包含所有字段的构造器。@NonNull字段会进行null判断检查。
  access,同上
  staticName,同上
@Data
  标注于类之上,是@ToString,@EqualsAndHashCode、@Getter、@Setter、@RequiredArgsConstructor的综合体
  staticConstructor,同staticName
@Value
  可以看成是@Data的变体,表示生成一个不可变类(final类)。没有set方法,只有get方法,字段全部为final private的,类也是final的
  等效于@Getter @FieldDefaults(makeFinal=true, level=AccessLevel.PRIVATE) @AllArgsConstructor @ToString @EqualsAndHashCode
  staticConstructor,同上。
  如果手工实现了任何一个注解的功能,那么该注解将失效,为了使注解起效,你可以在手共实现的方法上添加注解@lombok.experimental.Tolerate,用于将手共实现对lombok隐藏。
  我们可以使用下面两种方式来重写默认为final和private的行为,一是直接在字段上添加accessLevel,二是使用@NonFinal或者@PackagePrivate注解。
@Builder
  标注于类之上,用于生成复杂的builder API,创建构建者模式。
  还可用于标注于构造器和方法之上。
@SneakyThrows
  标注于方法之上用于隐藏异常抛出语句,该注解存在争议,暂不使用
@Log
  @CommonsLog
  @Flogger
  @JBossLog
  @Log
  @Log4j
  @Log4j2
  @Slf4j
  @XSlf4j
@Synchronized
  标注于方法(只能用于静态方法和实例方法)之上,用于表示同步方法,锁可以使用默认的也可以使用自定义的锁(private final )。

第三方工具系列--Lombok常用注解的更多相关文章

  1. 20190905 Lombok常用注解

    Lombok常用注解 val 用于声明类型,将从初始化表达式推断出类型,仅适用于局部变量和foreach循环,而不适用于字段.声明的局部变量为final变量. Java自带类型推断随着JDK版本提升越 ...

  2. Lombok 常用注解

    Lombok Lombok 能以简单的注解形式来简化 java 代码,提高开发人员的开发效率.例如开发中经常需要写的 javaBean,都需要花时间去添加相应的 getter/setter,也许还要去 ...

  3. lombok常用注解@Data@AllArgsConstructor@NoArgsConstructor@Builder@Accessors

    原贴:https://blog.csdn.net/ChenXvYuan_001/article/details/84961992 https://blog.csdn.net/weixin_382293 ...

  4. lombok常用注解

    简介: Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率.例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器.equ ...

  5. [Java 开发利器Lombok] 常用注解演示

    在以往的对象模型编码时,我们需要写一大堆的get/set以及不同的构造函数等.Lombok为我们提供了一个非常好的插件形式. 在大多数的项目中,只需要使用到以下集中Annotation就足够了,如果需 ...

  6. Lombok 常用注解总结

    本文转载自知乎专栏 极乐科技.有所整理. 主要注解 @Data @Setter @Getter @Log4j @AllArgsConstructor @NoArgsConstructor @Equal ...

  7. lombok --- 常用注解解析

    @Data@Getter @Setter @ToString@Cleanup@NonNull@Builder@EqualsAndHashCode      

  8. Lombok - 使用注解让你的JavaBean变得更加简洁

    Lombok - 工具简介: Lombok是一个编译时注释预处理器,有助于在编译时注入一些代码.Lombok提供了一组在开发时处理的注释,以将代码注入到Java应用程序中,注入的代码在开发环境中立即可 ...

  9. Spring注解 系列之Spring常用注解总结

    参考:Spring系列之Spring常用注解总结 (1) Resource 默认是byName的方式进行bean配置,@AutoWired默认是按照byType的方式进行装配bean的:(2)Comp ...

随机推荐

  1. 1002 A+B for Polynomials 可弃

    使用类似桶排序的计数方式来存储

  2. html5中如何更改、去掉input type默认样式

    1.如何去掉input type=date 默认样式 HTML代码: 选择日期:<input type="date" value="2017-06-01" ...

  3. 对状压dp的一点理解

     此dp可以理解为最暴力的dp,因为他需要遍历每个状态,所以将会出现2^n的情况数量,所以明显的标志就是数据不能太多(好像是<=15?),然后遍历所有状态的姿势就是用二进制来表示,01串,1表示 ...

  4. 画PCB之电流与线宽的关系

    来源:(多图) 超强整理!PCB设计之电流与线宽的关系http://www.51hei.com/bbs/dpj-39134-1.html 关于PCB线宽和电流的经验公式,关系表和软件网上都很多,本文把 ...

  5. Python机器学习步骤

    推荐学习顺序 学习机器学习得有个步骤, 下面大家就能按照自己所需, 来探索这个网站. 图中请找到 "Start", 然后依次沿着箭头, 看看有没有不了解/没学过的地方, 接着, 就 ...

  6. LeetCode刷题:第四题 寻找两个有序数组的中位数

    题目描述: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和  ...

  7. Calendar and GregorianCalendar

    1.GregorianCalendar是Calendar的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统 2.注意 (1)月份:1月到12月[0-11] (2)星期:周日到周六[1-7] ...

  8. 王垠的40行代码,究竟diao在哪里

    王垠是谁? 不用我说了吧!!! 别傻谈,亮码瞧! ;; A simple CPS transformer which does proper tail-call and does not;; dupl ...

  9. ThreadLocal类的简单使用

    1.概述变量值的共享可以使用public 是static 变量的形式,所有的线程都使用同一个public static 变量. 如实现线程内的共享变量,jdk提供了ThreadLocal来解决这个问题 ...

  10. Javascript高级编程学习笔记(44)—— 动态样式

    动态样式 动态样式和昨天的动态脚本一样,都是一种动态引入外部样式(脚本的方式) 由于样式是由 link 元素引入的,所以动态样式自然也就是动态生成link元素插入文档的方式 不过和动态脚本不同的是,动 ...