您现在的位置是:主页 > Web前端技术 > Web前端技术

Java的Lombok如何使用编程语言

IDCBT2022-01-07服务器技术人已围观

简介本篇内容主要讲解“Java的Lombok如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java的Lombok如何使用”吧! 1)引入相应的

本篇内容主要讲解“Java的Lombok如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java的Lombok如何使用”吧!

1)引入相应的maven包:

<dependency>    <groupId>org.projectlombok</groupId>    <artifactId>lombok</artifactId>    <version>1.16.18</version>    <scope>provided</scope>  </dependency>

Lombok的scope=provided,说明它只在编译阶段生效,不需要打入包中。事实正是如此,Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件。

2)添加IDE工具对Lombok的支持:

IDEA中引入Lombok支持如下:

     点击File-- Settings设置界面,安装Lombok插件:   

      点击File-- Settings设置界面,开启Annocation Processors:

      开启该项是为了让Lombok注解在编译阶段起到作用。

      Eclipse的Lombok插件安装可以自行百度,也比较简单,值得一提的是,由于Eclipse内置的编译器不是Oracle javac,而是eclipse自己实现的Eclipse Compiler for Java (ECJ).要让ECJ支持Lombok,需要在eclipse.ini配置文件中添加如下两项内容:

      -Xbootclasspath/a:[lombok.jar所在路径]

      -javaagent:[lombok.jar所在路径]

      3)Lombok实现原理:

      自从Java 6起,javac就支持“JSR 269 Pluggable Annotation Processing API”规范,只要程序实现了该API,就能在javac运行的时候得到调用。

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

         javac对源代码进行分析,生成一棵抽象语法树(AST)

         javac编译过程中调用实现了JSR 269的Lombok程序

         此时Lombok就对第一步骤得到的AST进行处理,找到Lombok注解所在类对应的语法树(AST),然后修改该语法树(AST),增加Lombok注解定义的相应树节点

         javac使用修改后的抽象语法树(AST)生成字节码文件

        4) Lombok注解的使用:

        POJO类常用注解:

        @Getter/@Setter: 作用类上,生成所有成员变量的getter/setter方法;作用于成员变量上,生成该成员变量的getter/setter方法。可以设定访问权限及是否懒加载等。

        package com.trace;  import lombok.AccessLevel;  import lombok.Getter;  import lombok.Setter;  /**   * Created by Trace on 2018/5/19.<br/>   * DESC: 测试类   */  @SuppressWarnings("unused")  public class TestClass {      public static void main(String[] args) {      }      @Getter(value = AccessLevel.PUBLIC)      @Setter(value = AccessLevel.PUBLIC)      public static class Person {          private String name;          private int age;          private boolean friendly;      }      public static class Animal {          private String name;          private int age;          @Getter @Setter private boolean funny;      }   }

        标签:

        很赞哦! ()

本栏推荐