Project Lombok is a java library that automatically plugs into your editor
and build tools, spicing up your java.
Never write another getter or equals method again,
with one annotation your class has a fully featured builder,
Automate your logging variables, and much more.
翻译 : lombok可以自动添加到编辑器中的代码增强工具,再也不用写在getter和 euqals ,toString一些方法。
只需要在一个java类上添加一个注解,就可以拥有功能齐全的的构建器,还有自动日志变量,等等其他的功能。
上面是lombok的官方的一段文字,然后官网还有一段视屏来演示如何使用lombok.
使用lombok就可以完全的不用写java实体类或者是其他的类的getter、setter、toString等方法。
使用lombok需要导入jar包 和 在idea安装插件。idea插件安装可以百度。
maven导入jar
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>
lombok 特性一 :
val 变量, val变量只能是局部变量,相当于java中的 final 局部变量。特别注意的是val 变量可以声明任何
java类型的.
官方示例 使用了lombok:
import java.util.ArrayList;
import java.util.HashMap;
import lombok.val;
public class ValExample {
public voidexample() {
val example = new ArrayList<String>();
example.add("Hello, World!");
val foo = example.get(0);
val map = new HashMap<Integer, String>();
}
}
官方示例没有使用lombok时java代码
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class ValExample {
public String example() {
final ArrayList<String> example = new ArrayList<String>();
final HashMap<Integer, String> map = new HashMap<Integer, String>();
example.add("Hello, World!");
final String foo = example.get(0);
return foo.toLowerCase();
}
}
这俩种代码是相等的。
特征二 var变量: var变量 和 上面说的val变量的工作方式完全一样,只是没有被标记为 finall . (这里需要设置lombok.var.flagUsage)
特征三 : @Data 注解
在实体类上加上该注解 就相当于 @ToString
, @EqualsAndHashCode
, @Getter ,
@Setter,
@RequiredArgsConstructor
这些注解汇集在一起。 省去了我们用编译器生成toString()方法,每个字段的get和set方法,以及 equals() 和
hashCode()方法。如果类中有f inal 修饰 的字段,则没有无参构造函数, 默认生成的是带 final 字段的构造函数。
官方示例 :
特征四 : @Getter/@Setter @ToString
@EqualsAndHashCode
生成 pojo 类属性的get、set 等方法 。
特征五 :
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor 各种形式的构造方法。
第一个是无参构造函数,第二个是带 final属性的构造函数, 第三个是全部属性的构造参数