Android中消除Java冗長(zhǎng)代碼神器——Lombok

簡(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?

Using Lombok.png

---EOF---

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,942評(píng)論 25 709
  • 本文章涉及代碼已放到github上annotation-study 1.Annotation為何而來 What:A...
    zlcook閱讀 29,746評(píng)論 15 116
  • 最近兩個(gè)月一直過著吃土的日子,《大魚海棠》忍了沒看等網(wǎng)播,這部萌片上了就舍棄了《盜墓筆記》果斷選擇它了。 有人說這...
    三米GZ閱讀 752評(píng)論 0 0
  • 《圓夢(mèng)》 時(shí)至今日, 兩大幸事: 父母予命; 娶你為妻。 我妻袁夢(mèng), 圓我之夢(mèng), 金玉其外, 玉金其中。 當(dāng)然當(dāng)然...
    山林風(fēng)火閱讀 344評(píng)論 0 0
  • 佛曇簡(jiǎn)介: 佛曇是歷史悠久的古鎮(zhèn)。因芙蓉山下從前有一口清潭,映現(xiàn)山頂一塊狀如佛頭的天然巖石,稱佛潭,以至成為...
    5bfd687371b8閱讀 1,381評(píng)論 0 0

友情鏈接更多精彩內(nèi)容