Lombok详解

Lombok详解
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

lombok介绍

lombok可以通过简单的注解的形式来帮助我们简化和消除一些必须有但显得很臃肿的Java代码,比如常见的Getter&Setter、toString()、构造函数等等。lombok不仅方便编写,同时也让我们的代码更简洁。
lombok提供了一个功能完整的jar包,可以很方便的与我们的项目进行集成。

maven依赖

以maven项目为例,pom文件中引入:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.20</version>
    <scope>provided</scope>
</dependency>
lombok插件安装

下载lombok.jar,(https://projectlombok.org/download.html),建议下载与项目中依赖的lombok版本一致或者更高。
将下载好的lombok.jar移至eclipse的根目录,和 eclipse.ini 文件平级的。
在lombok.jar 的目录下,运行:
这里写图片描述
java -jar lombok.jar
a. 运行后会弹框如下框,直接点确定
这里写图片描述
b. 点specify location 按钮,选择eclipse的安装目录,选择到eclipse层即可。
按如下图步骤点击install即可
这里写图片描述
这里写图片描述
c. 成功后如下图:
这里写图片描述
黑框框也多了很多log:
这里写图片描述
看看是否真的安装成功,可以在 eclipse.ini 中看看,我的环境是多了一行(-javaagent:D:\Program Files\eclipse\lombok.jar)
这里写图片描述
重启eclipse,再clean project。

若是idea,则打开IDEA,选择 file -> settings -> plugins;
在搜索框中输入Lombok plugin,点击install;重启IDEA,安装完成。

** @NonNull**
给方法参数增加这个注解会自动在方法内对该参数进行是否为空的校验,如果为空,则抛出NPE(NullPointerException)。

** @Getter/@Setter**
使用在成员变量或者类上,为特定成员变量/类中所有变量生成Getter/Setter方法。

@ToString
用在类上,可以自动覆写toString方法,当然还可以加其他参数,例如@ToString(exclude=”id”)排除id属性,或者@ToString(callSuper=true, includeFieldNames=true)调用父类的toString方法,包含所有属性。

@EqualsAndHashCode
自动生成hashCode() 和 equals()方法。

@Data
注解在类上,相当于同时使用了@ToString、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstrutor

示例:
使用@Data注释改造下DataDemo,效果如下。需要注意的是使用@RequiredArgsConstrutor生成静态方法需指定staticConstructor的值。

 @Data(staticConstructor = "lombok")
public class DataDemo{
      private final String name;
      @Setter(value = AccessLevel.PACKAGE) private int age;
      private double score;
      private String[] tags;

      @ToString(includeFieldNames=true)
      @Data(staticConstructor="of")
      public static class Exercise<T> {
        private final String name;
        private final T value;
      }
}

@Value
用在类上,是@Data的不可变形式,相当于为属性添加final声明,只提供getter方法,而不提供setter方法,具体示例可以参考@Data部分

@Log
lombok可以快速生成多种常用日志实例,包括Commonslog、log、log4j、slf4j等等,具体的使用可以依照需求灵活选择。

** @Cleanup**
这个注解用在变量前面,可以保证此变量代表的资源会被自动关闭,默认是调用资源的close()方法,如果该资源有其它关闭方法,可使用@Cleanup(“methodName”)来指定要调用的方法.
示例:
@Cleanup不仅减少了代码编写,同时也避免了可能的泄露问题,CleanUpDemo的lombok改造效果如下。

public class CleanUpDemo {
  public static void main(String[] args) throws IOException {
    @Cleanup InputStream in = new FileInputStream(args[0]);
    @Cleanup OutputStream out = new FileOutputStream(args[1]);
    byte[] b = new byte[10000];
    while (true) {
      int r = in.read(b);
      if (r == -1) break;
      out.write(b, 0, r);
    }
  }
}
本文来源jackaroo2020,由javajgs_com转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/7058

发表评论