簡介
Android中經(jīng)常需要建一些數(shù)據(jù)的實體類,然后實現(xiàn)它們的getter和setter的方法凡简,雖然有JsonFormat的插件可以一鍵生成對應(yīng)的getter和setter的方法秤涩,但是如果一個實體類有幾十個變量的話司抱,生成大量的代碼,使這個實體類不夠簡潔浊竟。而Lombok正是一個可以消除Java冗長代碼津畸,使代碼更精簡和優(yōu)雅的注解工具。它可以在編譯期自動生成getter/setter/toString/equals/hashCode/constructor等方法后频,而在實體類中隱藏掉(不寫)這些方法(代碼中還可以引用),從而減少代碼量膏执,使代碼更精簡露久。
Lombok官網(wǎng)地址:https://projectlombok.org/ 它可以用于Java開發(fā)毫痕,也可以用于Android開發(fā),用法基本相同栏笆,下面主要講在Android Studio平臺下的使用臊泰。
安裝插件和開啟Annotation process
在Android Studio下,進(jìn)入setting/Plugins/Browse repositories针饥,搜索Lombok察滑,如下圖修肠,然后點(diǎn)擊安裝嵌施,重啟Android Studio
接著,要使代碼主要添加了Lombok的相關(guān)注解就編譯生成對應(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铜跑,是編譯時使用,但不打包到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;
}
對應(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;
等價于
@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)于同時使用@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---