簡(jiǎn)介
Android中經(jīng)常需要建一些數(shù)據(jù)的實(shí)體類,然后實(shí)現(xiàn)它們的getter和setter的方法,雖然有JsonFormat的插件可以一鍵生成對(duì)應(yīng)的getter和setter的方法,但是如果一個(gè)實(shí)體類有幾十個(gè)變量的話,生成大量的代碼,使這個(gè)實(shí)體類不夠簡(jiǎn)潔。而Lombok正是一個(gè)可以消除Java冗長(zhǎng)代碼,使代碼更精簡(jiǎn)和優(yōu)雅的注解工具。它可以在編譯期自動(dòng)生成getter/setter/toString/equals/hashCode/constructor等方法,而在實(shí)體類中隱藏掉(不寫)這些方法(代碼中還可以引用),從而減少代碼量,使代碼更精簡(jiǎn)。
Lombok官網(wǎng)地址:https://projectlombok.org/ 它可以用于Java開發(fā),也可以用于Android開發(fā),用法基本相同,下面主要講在Android Studio平臺(tái)下的使用。
安裝插件和開啟Annotation process
在Android Studio下,進(jìn)入setting/Plugins/Browse repositories,搜索Lombok,如下圖,然后點(diǎn)擊安裝,重啟Android Studio

接著,要使代碼主要添加了Lombok的相關(guān)注解就編譯生成對(duì)應(yīng)的方法,就要開啟Annotation process。進(jìn)入File/Other Settings/Defalut Settings中,如下圖,在Complier/Annotatioin Processors中勾選上Enable annotation processing即可

添加依賴
在Lombok官網(wǎng)的Android使用說明中,要求android plugin版本要不小于0.4.3,然后添加以下依賴即可:
provided "org.projectlombok:lombok:1.12.6"
使用provided而不是compile,是編譯時(shí)使用,但不打包到apk中,更多的使用方法,參考:gradle中compile,provided,compile files,compile project有何區(qū)別?
用法
1.@Getter @Setter
直接在變量定義前加相應(yīng)的方法
class Person{
@Getter @Setter private String name;
@Setter(AccessLevel.PROTECTED) private int age;
}
對(duì)應(yīng)的完整寫法就是
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;
等價(jià)于
@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
相當(dāng)于同時(shí)使用@ToString, @EqualsAndHashCode, @Getter和@Setter
具體代碼略
其他注解參考官網(wǎng):https://projectlombok.org/features/index.html
Java界的神器-使用Lombok來消除你的冗余代碼量,這篇文章寫得比較完整,就不重復(fù)寫了
補(bǔ)充(2016.08.23):
JakeWharton大神并不建議使用,Anyone Using Project Lombok?

---EOF---