乐趣区

Java优雅高效巧技之Lombok

背景

    我们在开发过程中,通常都会定义大量的 JavaBean,然后通过 IDE 去生成其属性的构造器、getter、setter、equals、hashcode、toString 方法,当要对某个属性进行改变时,比如命名、类型等,都需要重新去生成上面提到的这些方法,那 Java 中有没有一种方式能够避免这种重复的劳动呢?答案是有,我们来看一下下面这张图,右面是一个简单的 JavaBean,只定义了两个属性,在类上加上了 @Data,从左面的结构图上可以看到,已经自动生成了上面提到的方法。

Lombok 简介
  Lombok 是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。官方地址:https://projectlombok.org/,github 地址:https://github.com/rzwitserlo…。
Lombok 使用
注解介绍
  下面只是介绍了几个常用的注解,更多的请参见 https://projectlombok.org/fea…。
@Getter / @Setter
  可以作用在类上和属性上,放在类上,会对所有的非静态(non-static) 属性生成 Getter/Setter 方法,放在属性上,会对该属性生成 Getter/Setter 方法。并可以指定 Getter/Setter 方法的访问级别。
@EqualsAndHashCode
  默认情况下,会使用所有非瞬态 (non-transient) 和非静态 (non-static) 字段来生成 equals 和 hascode 方法,也可以指定具体使用哪些属性。
@ToString
  生成 toString 方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割。
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
  无参构造器、部分参数构造器、全参构造器,当我们需要重载多个构造器的时候,Lombok 就无能为力了。
@Data
  @ToString, @EqualsAndHashCode, 所有属性的 @Getter, 所有 non-final 属性的 @Setter 和 @RequiredArgsConstructor 的组合,通常情况下,我们使用这个注解就足够了。
Lombok 问题

    无法支持多种参数构造器的重载。

idea 下安装 Lombok 插件
第一步: 找到配置下的插件管理器, 点击插件仓库搜索 lombok 进行安装

第二步: 配置编译器扫描注解, 然后重启 idea.

第三步: 使用 lombok 时需要用到 lombok jar 包 这里给出 maven 地址
[Java] 纯文本查看 复制代码

<dependency>

   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <version>1.16.12</version>

</dependency>

第四步: 踩坑检测

1. 检测 java 编译器类型, 请选择 javac, 并去掉使用目标模块的 jdk 作为编译器的勾选.(要不然, 编译是无法通过的)

2.JDK 一定要配置环境变量 JAVA_HOME 和 PATH.

参考
https://blog.csdn.net/ghsau/a…
https://www.cnblogs.com/amose…

退出移动版