簡介
他是一個通過注解方式來減少你的POJO類的getter和setter等方法的一個工具,我這里演示的在Android Studio中的使用方式,當(dāng)然如果你使用的是idea那么這方法也通用,如果你用的是eclipse,那么官網(wǎng)也有視頻教程,我這里就不演示了
安裝依賴
眾所周知在在Android Studio中添加依賴有直接下載jar包和使用cradle的dependencies方法,我們這里直接使用dependencies方法
添加gradle依賴
在你的項(xiàng)目的build.grade文件中添加
provided 'org.projectlombok:lombok:1.12.6'
至于為什么是provided而不是compile,因?yàn)檫@個框架是在將java編譯為class前處理代碼了,意思是在生成的class文件中已經(jīng)生成了getter和setter,所以這個依賴是我們在編譯的時候使用,不需要打包到apk中
安裝Lombok插件
雖然我們添加了依賴,但是Android Studio他知道怎么處理這個文件嗎,肯定是不知道啦,所以我們的安裝一個插件來告訴他怎么處理
Preferences > Plugins > Browse repositories
在輸入框內(nèi)輸入combo,可看到已經(jīng)搜索出來了這個插件,我們點(diǎn)擊旁邊的安裝,安裝完成后重啟插件我們就安裝完畢了,它的使用使用說明可以查看插件主頁

現(xiàn)在插件雖然安裝完了,但是Android Studio他怎么知道什么時候來使用這個插件呢,他是不是有個開關(guān)什么的,沒錯!你猜對了
開啟項(xiàng)目的Annotation process
首先我們打開項(xiàng)目的設(shè)置,要強(qiáng)調(diào)的是項(xiàng)目的,而不是工具全局的設(shè)置,如下圖

打開后按照下圖勾選Enable annotation processing

到這里為止,工具和基本環(huán)境我們基本配置完了,接下來我們需要創(chuàng)建一個項(xiàng)目來測試
一些常用注解
@Getter and @Setter
可以很直觀的從名字看出這個兩個是分別用來生成Getter和Setter方法的
public class User{
@Getter @Setter private boolean employed = true;
@Setter(AccessLevel.PROTECTED) private String name;
}
相當(dāng)于
public class User {
private boolean employed = true;
private String name;
public User() {
}
public boolean isEmployed() {
return this.employed;
}
public void setEmployed(boolean employed) {
this.employed = employed;
}
protected void setName(String name) {
this.name = name;
}
}
到這里,大家肯定要問了,你說相當(dāng)就等啊,或者上面相等的代碼是怎么來的呢,其他我們可以直接反編譯生成的class文件查看,打開Android Studio的class目錄下的User.class文件,可以看到

同樣下面的實(shí)例代碼你可以這樣查看,當(dāng)然我們也可用通過Android Studio的

從上圖我們發(fā)現(xiàn)我們沒有在源代碼寫一些Getter方法,但是從Structure窗口看到這些方法已經(jīng)自動生成了,是不是很神奇
@NonNull
提供一個參數(shù)的非空判斷
@Getter @Setter @NonNull
private List<String> members;
等同于
@NonNull
private List<String> members;
@NonNull
public List<String> getMembers() {
return this.members;
}
public void setMembers(@NonNull List<String> members) {
if(members == null) {
throw new NullPointerException("members");
} else {
this.members = members;
}
}