教你把Java Bean擼成串的最快方法-自定義setter生成指令碼

柴澤建_Jack發表於2019-01-21

適用工具:IntelliJ IDEAAndroid Studio

1 效果展示

廢話少說,看效果。

Student student = new Student()
                .setId("11111")
                .setName("Jack")
                .setGender("male")
                .setSchoolName("Center South University")
                .setClassName("IOT");複製程式碼

我相信,很多人都已經熟悉鏈式呼叫了。如果不熟悉也沒有關係,鏈式呼叫就是我上面的寫的那個樣子。你在寫的過程中,可以一直點下去。是不是很爽!

但是,通常情況下,Java中只有建造者模式才提供這種方法,另外還有些框架和庫提供。

想想使用RxJava的人,寫程式碼真是爽的不得了。當然RxJava那個爽的另有其因,它把非同步擼成了串的同時把多層巢狀擼成了串。要知道,我的Leader說(甩鍋用的,後面說的不對不要找我),人思維的巢狀層次大概只有3層,如果再多,程式碼閱讀會非常困難。而程式碼巢狀在非同步處理的時候經常發生。所以RxJava充分解決了這個問題。好像扯遠了。

啪!說好的廢話少說呢?

2 原理

在我看來,我們在寫Java Bean的時候,經常寫的set方法,其中的返回值void,簡直就是一種資源浪費。所以我想,將set方法返回this,不就可以實現Java Bean的鏈式呼叫嗎?嗯,沒錯,我上面的鏈式呼叫就是更改了Java Bean中的set方法,讓他們返回this。那麼看一下Student的程式碼。

public class Student {

    private String id ;
    private String name ;
    ……

    public Student setId(final String id) {
        this.id = id;
        return this;
    }

    public Student setName(final String name) {
        this.name = name;
        return this;
    }

    ……
}複製程式碼

對就是這個樣子。

但是我們在寫程式碼的時候通常都是自動生成settergetter方法的呀。我之前都是生成完了setter方法之後,全域性替換void欄位,但是這種效率太低了,而且,當你的Bean中有其他方法了之後,就不能這麼幹了。那麼接來下展示 神技 !

3 神技效果

看圖吧!

生成的setter方法正是我們需要的。前面已經寫了,該神技適用於IntelliJ IDEAAndroid Studio。其實就是IntelliJ IDEA核心嘛。

那麼來看看怎麼做吧!

4 神技實現過程(自定義setter指令碼)

是不是感覺高大上了,其實很簡單。這就教給大家。

4.1 開啟Generate並進入setter

4.2 進入Setter成員選擇介面

這個介面你是不是再熟悉不過了,但你有沒有注意看過我標記的兩個地方?

Template裡就是setter的模版生成指令碼,我們當前使用的是預設的。這個時候如果你回去上面的動圖,會發現,我的這裡是my setter。其實就是我自己寫的一個生成指令碼。但是後來我發現,根本沒有這種必要因為,IntelliJ IDEA已經給我們準備好了。

點選下拉鍵,選擇Builder模版(這個模版就是帶有this返回值的setter生成模版),然後再選擇成員,確定,即可生成我們要的setter

如果有必要的話,我們還可以自己自定義模版。

4.3 自定義模版

點選,進入模版管理介面。

我們可以通過建立一個新的模版指令碼,然後編寫指令碼即可。之後點選Ok。我自己寫了一個my setter,後來發現和系統的Builder一樣。囧!

5 結束語

其實不止是setter的模版可以這樣改,其他的也可以,大同小異。去按自己的需求做吧!

更多Android Studio的神操作可以檢視我的另一篇文章:

Android Studio相見恨晚的操作錦集

Android Studio編輯區背景設定方法。可以看我另一篇文章:

讓你的Android Studio性感起來--Sexy Editor

謝謝閱讀,嘿嘿!

相關文章