简介
Android中经常需要建一些数据的实体类,然后实现它们的getter和setter的方法,虽然有JsonFormat的插件可以一键生成对应的getter和setter的方法,但是如果一个实体类有几十个变量的话,生成大量的代码,使这个实体类不够简洁。而Lombok正是一个可以消除Java冗长代码,使代码更精简和优雅的注解工具。它可以在编译期自动生成getter/setter/toString/equals/hashCode/constructor等方法,而在实体类中隐藏掉(不写)这些方法(代码中还可以引用),从而减少代码量,使代码更精简。
Lombok官网地址:https://projectlombok.org/ 它可以用于Java开发,也可以用于Android开发,用法基本相同,下面主要讲在Android Studio平台下的使用。
安装插件和开启Annotation process
在Android Studio下,进入setting/Plugins/Browse repositories,搜索Lombok,如下图,然后点击安装,重启Android Studio
接着,要使代码主要添加了Lombok的相关注解就编译生成对应的方法,就要开启Annotation process。进入File/Other Settings/Defalut Settings中,如下图,在Complier/Annotatioin Processors中勾选上Enable annotation processing即可
添加依赖
在Lombok官网的Android使用说明中,要求android plugin版本要不小于0.4.3,然后添加以下依赖即可:
provided "org.projectlombok:lombok:1.12.6"
使用provided而不是compile,是编译时使用,但不打包到apk中,更多的使用方法,参考:gradle中compile,provided,compile files,compile project有何区别?
用法
1.@Getter @Setter
直接在变量定义前加相应的方法
class Person{
@Getter @Setter private String name;
@Setter(AccessLevel.PROTECTED) private int age;
}
对应的完整写法就是
class Person{
private String name;
private int age;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public void setAge(String age){
this.age=age;
}
}
2.@NonNull
@Getter @Setter @NonNull
private Model model;
等价于
@NonNull
private Model model;
@NonNull
public Model getModel(){
return model;
}
public void setModel(@NonNull Model model){
if(model==null){
throw new NullPointerException("model");
} else {
this.model = model;
}
}
3.@Data
相当于同时使用@ToString, @EqualsAndHashCode, @Getter和@Setter
具体代码略
其他注解参考官网:https://projectlombok.org/features/index.html
Java界的神器-使用Lombok来消除你的冗余代码量,这篇文章写得比较完整,就不重复写了
补充(2016.08.23):
JakeWharton大神并不建议使用,Anyone Using Project Lombok?
---EOF---