背景
平時作業中大家經常使用到boolean以及Boolean型別的資料,前者是基本資料型別,后者是包裝類,為什么不推薦使用isXXX來命名呢?到底是用基本型別的資料好呢還是用包裝類好呢?Java面試寶典PDF完整版
例子:
1.其他非boolean型別
private String isHot;
public String getIsHot() {
return isHot;
}
2.boolean型別
private boolean isHot;
public boolean isHot() {
return isHot;
}
3.包裝型別
private Boolean isHot;
public Boolean getHot() {
return isHot;
}
4.不以is開頭
private boolean hot;
public boolean isHot() {
return hot;
}
5.包裝型別
private Boolean hot;
public Boolean getHot() {
return hot;
}
其實阿里巴巴發布的java開發手冊中就寫明了,強制規定,布爾型別的資料,無論是boolean還是Boolean都不準使用isXXX來命名
-
對于非boolean型別的引數,getter和setter方法命名的規范是以get和set開頭
-
對于boolean型別的引數,setter方法是以set開頭,但是getter方法命名的規范是以is開頭
-
包裝類自動生成的getter和setter方法的名稱都是getXXX()和setXXX()
-
其實javaBeans規范中對這些均有相應的規定,基本資料型別的屬性,其getter和setter方法是getXXX()和setXXX,但是對于基本資料中布爾型別的資料,又有一套規定,其getter和setter方法是isXXX()和setXXX,但是包裝型別都是以get開頭
-
這種方式在某些時候是可以正常運行的,但是在一些rpc框架里面,當反向決議讀取到isSuccess()方法的時候,rpc框架會“以為”其對應的屬性值是success,而實際上其對應的屬性值是isSuccess,導致屬性值獲取不到,從而拋出例外,
1、boolean型別的屬性值不建議設定為is開頭,否則會引起rpc框架的序列化例外,
2、如果強行將IDE自動生成的isSuccess()方法修改成getSuccess(),也能獲取到Success屬性值,若兩者并存,則之后通過getSuccess()方法獲取Success屬性值,
作業中使用基本型別的資料好還是包裝類好?
咱們舉個例子,一個計算盈利的系統,其盈利比例有正有負,若使用了基本型別bouble定義了資料,當RPC呼叫時,若出現了問題,本來應該回傳錯誤的,但是由于使用了基本型別,回傳了0.0,系統會認為沒有任何問題,今年收支平衡,而不會發現其實是出現了錯誤,若使用了包裝資料型別Double,當RPC呼叫失敗時,會回傳null,這樣直接就能看到出現問題了,而不會因為默認值的問題影響判斷,
其實阿里java開發手冊中對于這個也有強制規定:
因此,這里建議大家POJO中使用包裝資料型別,區域變數使用基本資料型別,Java面試寶典PDF完整版
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/252922.html
標籤:其他
