中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

為什么不建議boolean類型變量用isXXX

發布時間:2021-10-18 17:11:46 來源:億速云 閱讀:138 作者:iii 欄目:編程語言

這篇文章主要講解了“為什么不建議boolean類型變量用isXXX”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“為什么不建議boolean類型變量用isXXX”吧!

背景: 平時工作中大家經常使用到boolean以及Boolean類型的數據,前者是基本數據類型,后者是包裝類,為什么不推薦使用isXXX來命名呢?到底是用基本類型的數據好呢還是用包裝類好呢? 

例子:

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類型變量用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屬性值。

工作中使用基本類型的數據好還是包裝類好

咱們舉個例子,一個計算盈利的系統,其盈利比例有正有負,若使用了基本類型double定義了數據,當RPC調用時,若出現了問題,本來應該返回錯誤的,但是由于使用了基本類型,返回了0.0,系統會認為沒有任何問題,今年收支平衡,而不會發現其實是出現了錯誤。若使用了包裝數據類型Double,當RPC調用失敗時,會返回null,這樣直接就能看到出現問題了,而不會因為默認值的問題影響判斷。

 其實阿里java開發手冊中對于這個也有強制規定:

為什么不建議boolean類型變量用isXXX

因此,這里建議大家POJO中使用包裝數據類型,局部變量使用基本數據類型。

感謝各位的閱讀,以上就是“為什么不建議boolean類型變量用isXXX”的內容了,經過本文的學習后,相信大家對為什么不建議boolean類型變量用isXXX這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

遂昌县| 冕宁县| 晋城| 漳浦县| 新郑市| 长春市| 伊金霍洛旗| 苏尼特右旗| 岫岩| 赤水市| 乌拉特前旗| 贵溪市| 甘谷县| 虞城县| 宜君县| 河津市| 宜黄县| 迭部县| 惠来县| 苍溪县| 大宁县| 灵丘县| 大城县| 承德市| 洪洞县| 温泉县| 富宁县| 金秀| 绥阳县| 志丹县| 阳西县| 兴业县| 新余市| 新平| 兴仁县| 太康县| 乌苏市| 罗山县| 阿克苏市| 汉阴县| 泗洪县|