為什么阿里強制 boolean 類型變量不能使用 is 開頭
來源:blog.csdn.net/belongtocode/article/details/100635246
背景
平時工作中大家經(jīng)常使用到boolean以及Boolean類型的數(shù)據(jù),前者是基本數(shù)據(jù)類型,后者是包裝類,為什么不推薦使用isXXX來命名呢?到底是用基本類型的數(shù)據(jù)好呢還是用包裝類好呢?
例子
private String isHot;
public String getIsHot() {
return isHot;
}
private boolean isHot;
public boolean isHot() {
return isHot;
}
private Boolean isHot;
public Boolean getHot() {
return isHot;
}
private boolean hot;
public boolean isHot() {
return hot;
}
private Boolean hot;
public Boolean getHot() {
return hot;
}
其實阿里巴巴發(fā)布的java開發(fā)手冊中就寫明了,強制規(guī)定,布爾類型的數(shù)據(jù),無論是boolean還是Boolean都不準使用isXXX來命名

getXXX()和setXXX,但是對于基本數(shù)據(jù)中布爾類型的數(shù)據(jù),又有一套規(guī)定,其getter和setter方法是isXXX()和setXXX。但是包裝類型都是以get開頭isSuccess()方法的時候,rpc框架會“以為”其對應的屬性值是success,而實際上其對應的屬性值是isSuccess,導致屬性值獲取不到,從而拋出異常。總結
1、boolean類型的屬性值不建議設置為is開頭,否則會引起rpc框架的序列化異常。
2、如果強行將IDE自動生成的isSuccess()方法修改成getSuccess(),也能獲取到Success屬性值,若兩者并存,則之后通過getSuccess()方法獲取Success屬性值。
若使用了包裝數(shù)據(jù)類型Double,當RPC調用失敗時,會返回null,這樣直接就能看到出現(xiàn)問題了,而不會因為默認值的問題影響判斷。
其實阿里java開發(fā)手冊中對于這個也有強制規(guī)定:

因此,這里建議大家POJO中使用包裝數(shù)據(jù)類型,局部變量使用基本數(shù)據(jù)類型。
感謝您的閱讀,也歡迎您發(fā)表關于這篇文章的任何建議,關注我,技術不迷茫!小編到你上高速。
正文結束
1.不認命,從10年流水線工人,到谷歌上班的程序媛,一位湖南妹子的勵志故事
5.37歲程序員被裁,120天沒找到工作,無奈去小公司,結果懵了...
一個人學習、工作很迷茫?
點擊「閱讀原文」加入我們的小圈子!

評論
圖片
表情
