LomBok

作者: 名字是乱打的 | 来源:发表于2020-06-16 15:21 被阅读0次

    我只取我需要关注的,或者说我要打笔记的点,灵感动机来自于刚到公司接触的项目让我初识LomBok.LomBok官方文档可以点击这里

    一.LomBok是啥?

    我认为lombok的主要作用有两点,1.简化代码 2.提高代码可读性
    表层原因是消除千篇一律的无用代码,至于哪些代码,可以往下看.

    二 .LomBok怎么用,哪里可以用?

    先看怎么用再看为什么.

    LomBok用到的注解👇

    • \color{red}{@Getter/@Setter注解}
      @Getter/@Setter注解的作用就是为字段添加getter/setter方法,可标注在类上,也可标注在字段上。

      • 标注在类上表示所有的非静态字段都会生成相应的getter/setter方法
      • 标注在字段上表示只为这个字段生成,且会覆盖标注在类上的注解
      • 可设置访问级别,默认为public
      • @Setter不可以标注final字段
    • \color{red}{@NonNull注解}
      @NonNull注解标注方法和构造器的参数(用在参数前,eg: (@NonNull String id)),如果参数为null,则会抛出空指针异常,或者用于变量上,不需要在代码中进行null检测

    • \color{red}{@ToString注解}
      @ToString注解用于类上生成toString()方法

      • @ToString.Exclude 标注属性值不包含在toString()方法中
      • @ToString.Include标注属性值包含在toString()方法中
        @ToString.Exclude
        private String age;
    • \color{red}{@EqualsAndHashCode注解}

      • @EqualsAndHashCode注解用于类上生成equals()和hashcode()方法,注解的属性和@ToString类似
    • \color{red}{@NoArgsConstructor 注解}
      用于类上生成一个无参数的构造方法,变量需要用final修饰

    • \color{red}{@NoArgsConstructor}
      自动生成无参数构造函数。

    • \color{red}{@ AllArgsConstructor}
      自动生成全参数构造函数。

    • \color{red}{@Data}
      自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,为非final字
      段添加@Setter,和@RequiredArgsConstructor,对于POJO类十分有用

    • \color{red}{@ Value }
      @Value注解为不可变类型的@Data,是@Data的一个变种。只提供getter方法,而不提供setter方法.它标注的类和字段都会被声明为final

    • \color{red}{@Builder注解}
      @Builder注解为类生成builder api以供调用。Builder是一种解决包含数量巨大且繁杂的字段的类的一种构建方式。

    • \color{red}{@Log}
      @Log注解为类添加一个日志对象log,类型为java.util.logging.Logger

    • \color{red}{@CleanUp注解}
      @CleanUp注解用于关闭资源,调用资源的close()方法,有点逆天啊

    • \color{red}{@SneakyThrows注解}
      自动管理资源,用在局部变量之前,在当前变量范围内即将执行完毕退出之前会自动清理资源,自动生成try-finally这样的代码来关闭流


    害~上面的注解,咱也就用到了几个常用的@data @AllArgsConstructor

    看了咋用的后,再看为什么

    Lombok本质上就是一个实现了“JSR 269 API”的程序。在使用javac的过程中,它产生作用的具体流程如下:

      1. javac对源代码进行分析,生成了一棵抽象语法树(AST)
      1. 运行过程中调用实现了“JSR 269 API”的Lombok程序
      1. 此时Lombok就对第一步骤得到的AST进行处理,找到@Data注解所在类对应的>语法树(AST),然后修改该语法树(AST),增加getter和setter方法定义的相应树节点
      1. javac使用修改后的抽象语法树(AST)生成字节码文件,即给class增加新的节点(代码块)

    看起来有点像大学时候学的编译原理,简单说就是编译时候,响应的注解相当于一个标识,lombok程序会启动并对之前的源码种的标识进行处理生成一些支撑代码(我们之前省略的大量代码),运行的时候省略的代码相当于已经补上了,那么自然跟我们之前全部写了效果等同.

    相关文章

      网友评论

          本文标题:LomBok

          本文链接:https://www.haomeiwen.com/subject/vlfrxktx.html