Lombok
介绍
Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。
使用
- 在开发工具中安装lombok插件
- 在项目中引入lombok.jar包
- 使用lombok注解(生成特定的代码)
注解
@Data
作用在类上,是以下注解的集合:@ToString、@EqualsAndHashCode、@Getter、@Setter、@RequiredArgsConstructor
@Data
@AllArgsConstructor
public class Student {
private Integer id;
private String name;
private Integer age;
private String schoolName ;
}
构造方法
- @NoArgsConstructor:生成无参数构造方法
- @AllArgsConstructor:生成全参数的构造方法
- @RequiredArgsConstructor:生成包含final和@NonNull注解成员变量的构造方法
//@NoArgsConstructor
@AllArgsConstructor
//生成包含final和@NonNull注解成员变量的构造方法
@RequiredArgsConstructor
public class Student {
@NonNull
private Integer id;
private String name;
private Integer age;
private final String schoolName ;
}
@NonNull
- 这个注解可以用在成员方法或者构造方法的参数前面,会自动产生一个关于此参数的非空检查,如果参数为空,则抛出一个空指针异常,举个例子来看看:
//成员方法参数加上@NonNull注解
public String getName(@NonNull Person p){
return p.getName();
}
实际效果相当于:
public String getName(@NonNull Person p){
if(p==null){
throw new NullPointerException("person");
}
return p.getName();
}
用在成员变量上面,可以在生成Setter方法和构造方法的时候,检查对应形参是否为空
@Data public class User { @NonNull private Integer id; private String name; private Integer age; }
@Getter/@Setter
作用在类上,生成所有成员变量的getter/setter方法
作用在成员变量上,生成该成员变量的getter/setter方法
可以设定访问权限
@Setter
@Getter(value = AccessLevel.PROTECTED)
public class Student {
private Integer id;
private String name;
private Integer age;
}
@ToString
作用在类上,覆盖默认的toString()方法,可以通过 of 属性限定显示某些字段,通过 exclude 属性排除某些字段
@ToString(exclude = {"age"},of = {"id","name"})
public class Student {
private Integer id;
private String name;
private Integer age;
}
@EqualsAndHashCode
作用在类上,覆盖默认的equals和hashCode方法,可以通过 of 属性限定比较某些字段,通过 exclude 属性排除某些字段
@EqualsAndHashCode(of = {"id"})
public class Student {
private Integer id;
private String name;
private Integer age;
}
Lombok实现原理
自从Java 6起,javac就支持“JSR 269 Pluggable Annotation Processing API”(插件化注解处理API)规范,只要程序实现了该API,就能在javac运行的时候得到调用。
Lombok就是一个实现了”JSR 269 API”的程序。在使用javac的过程中,它产生作用的具体流程如下:
javac对源代码进行分析,生成一棵抽象语法树(AST)
javac编译过程中调用实现了JSR 269的Lombok程序
此时Lombok就对第一步骤得到的AST进行处理,找到Lombok注解所在类对应的语法树 (AST),然后修改该语法树(AST),增加Lombok注解定义的相应树节点
javac使用修改后的抽象语法树(AST)生成字节码文件
Eclipse安装Lombok插件
1、下载lombok.jar,lombok.jar官方下载地址:https://projectlombok.org/download
2、双击下载好的lombak.jar,安装步骤如下:
2-1.关闭弹出的警告窗口,点击 Specify location..
2-2.选择eclipse的安装目录(确保该路径中不能有中文)
2-3.点击Install / Update
2-4.点击Quit Installer,完成安装
3、安装完成之后,请确认eclipse安装路径下是否多了一个lombok.jar包,并且其
配置文件eclipse.ini中是否 添加了如下内容:-javaagent:D:\build-env\eclipse\lombok.jar
4、重启eclipse或myeclipse
5、测试,建立如下类:
import lombok.Data;
@Data
public class DataObject {
private String id;
private String name;
private String userId;
private String password;
}
备注:如过安装成功但是@Data等注解无效,可能是由于你的eclipse版本是新版本,你的lombok.jar版本太旧。那么请下载最新的lombok.jar再进行安装。
6、lombok注解介绍请参看:http://blog.csdn.net/sunsfan/article/details/53542374