今天看到 面對介面髒資料你還在V層if str==null else setText? 一文,覺著寫得挺好,開發過程中多思考多動手,會帶來意想不到的效果。底下評論大家也都說了各自的方法和見解,文中有一些問題作者後來也解決了,看到評論裡有人說:
![image.png](https://i.iter01.com/images/4165f276e2592689b1721a5a9f06af8a0a9b39f7b04403008fcba631a1f3831f.png)
說到配置as,就可以實現在建立bean時自動生成return xx==null?"":xx;
覺著很好,因為我覺著這是一種挺簡單的方法,但是就如同底下人問了怎麼配置呀,我也不知道,於是我就在自己as
工具裡新建了一個bean物件,按住alt+insert
新增get/set
方法,發現瞭解決辦法。如下圖:
![image.png](https://i.iter01.com/images/0d7c41ae89ae924cc290b49045dedf695588c26a6a6e0ca2fc9bd4d89c5e1e4d.png)
平時手快也沒注意,今天仔細看了看,那上面的意思不就是,get
方法模組,set
方法模板嗎,後面跟著 IntelliJ Default
大概就是預設的生成模板吧,點選後面的三個點
按鈕進去看看,如下:
![image.png](https://i.iter01.com/images/c03440a48ea9fb943d8590b7c39506608b4c5f0d430268402e15182b24092c09.png)
這是set
的,get
方法也類似是這樣的,大概也能看懂,想著是不是可以直接模板就好了,發現無法修改,後來又發現左上角的+
號,原來是自己可以新建一個模板,然後再生成的時候選擇自己的模板就好了,如我們在get
模板中新建一個自己的模板:
![image.png](https://i.iter01.com/images/6e4c6fb00fbb3297b42c4ff1782bba0163c3bb7763b1c3c7431412573fd3c5f5.png)
![image.png](https://i.iter01.com/images/c283caa1f42746c3e79cee45775515521235eca918ea72b3c0fe61b2dff48bb9.png)
我們知道我們只需要改一下最後get
方法return
那個地方的程式碼,也就是這兒:
![image.png](https://i.iter01.com/images/dcc38595a3b8b53aff4b2a32579fd6e9e84040599c1fa3dfcff47ce610dd9abe.png)
不確定是不是,我們可以在後面跟著一個“#”號試試:
${name}() {
return $field.name+"#";
}
複製程式碼
在生成的時候選擇我們自定義的模板:
![image.png](https://i.iter01.com/images/c06af5d1f4a44d1f2e3936b2284e5051cbbd3fb3be044e549e5b7c12440ede97.png)
發現最後生成的程式碼:
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;
}
複製程式碼
好的,達成效果,耶,居然還可以這麼玩,以後可根據自己需求自行修改,謝謝大家。