適用工具:IntelliJ IDEA
,Android 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;
}
……
}複製程式碼
對就是這個樣子。
但是我們在寫程式碼的時候通常都是自動生成setter
和getter
方法的呀。我之前都是生成完了setter
方法之後,全域性替換void
欄位,但是這種效率太低了,而且,當你的Bean中有其他方法了之後,就不能這麼幹了。那麼接來下展示 神技 !
3 神技效果
看圖吧!
生成的setter
方法正是我們需要的。前面已經寫了,該神技適用於IntelliJ IDEA
,Android 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性感起來--Sexy Editor
謝謝閱讀,嘿嘿!