今天看到 面對介面髒資料你還在V層if str==null else setText? 一文,覺著寫得挺好,開發過程中多思考多動手,會帶來意想不到的效果。底下評論大家也都說了各自的方法和見解,文中有一些問題作者後來也解決了,看到評論裡有人說:

說到配置as,就可以實現在建立bean時自動生成return xx==null?"":xx;
覺著很好,因為我覺著這是一種挺簡單的方法,但是就如同底下人問了怎麼配置呀,我也不知道,於是我就在自己as
工具裡新建了一個bean物件,按住alt+insert
新增get/set
方法,發現瞭解決辦法。如下圖:

平時手快也沒注意,今天仔細看了看,那上面的意思不就是,get
方法模組,set
方法模板嗎,後面跟著 IntelliJ Default
大概就是預設的生成模板吧,點選後面的三個點
按鈕進去看看,如下:

這是set
的,get
方法也類似是這樣的,大概也能看懂,想著是不是可以直接模板就好了,發現無法修改,後來又發現左上角的+
號,原來是自己可以新建一個模板,然後再生成的時候選擇自己的模板就好了,如我們在get
模板中新建一個自己的模板:


我們知道我們只需要改一下最後get
方法return
那個地方的程式碼,也就是這兒:

不確定是不是,我們可以在後面跟著一個“#”號試試:
${name}() {
return $field.name+"#";
}
複製程式碼
在生成的時候選擇我們自定義的模板:

發現最後生成的程式碼:
public String getAge() {
return age + "#";
}
public void setAge(String age) {
this.age = age;
}
複製程式碼
這樣證明確定是這樣的,那麼我麼可以繼續進行真正的判斷了:
我們先把這個預設裡的get
方法程式碼拷貝到 MyGetter
中,我們再根據我們自己的需要修改模板程式碼,其它地方不變,就修改需要修改的地方:
我們想要實現這樣的:return xx==null?"":xx
,Ok ,那麼我認為大概是這麼寫的,注意我們只對String型別的欄位進行判斷,在此我修改下:
${name}() {
return $field.name == null ? "" : $field.name;
}
${name}() {
#if($field.String)
return $field.name == null ? "" : $field.name;
#else
return $field.name;
#end
}
複製程式碼
我們對比一個default
的寫法:
${name}() {
return $field.name;
}
複製程式碼
好的,我們再繼續生成一下:
public String getAge() {
return age == null ? "" : age;
}
public void setAge(String age) {
this.age = age;
}
複製程式碼
好的,達成效果,耶,居然還可以這麼玩,以後可根據自己需求自行修改,謝謝大家。