1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        為什么阿里強制 boolean 類型變量不能使用 is 開頭?

        共 1764字,需瀏覽 4分鐘

         ·

        2021-10-13 05:01

        點擊上方“碼農(nóng)突圍”,馬上關(guān)注

        這里是碼農(nóng)充電第一站,回復(fù)“666”,獲取一份專屬大禮包
        真愛,請設(shè)置“星標”或點個“在看

        來源:blog.csdn.net/belongtocode/article/details/100635246

        背景

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

        例子

        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;
        ????}????
        其實阿里巴巴發(fā)布的java開發(fā)手冊中就寫明了,強制規(guī)定,布爾類型的數(shù)據(jù),無論是boolean還是Boolean都不準使用isXXX來命名
        • 對于非boolean類型的參數(shù),getter和setter方法命名的規(guī)范是以get和set開頭
        • 對于boolean類型的參數(shù),setter方法是以set開頭,但是getter方法命名的規(guī)范是以is開頭
        • 包裝類自動生成的getter和setter方法的名稱都是getXXX()setXXX()
        1.其實javaBeans規(guī)范中對這些均有相應(yīng)的規(guī)定,基本數(shù)據(jù)類型的屬性,其getter和setter方法是getXXX()setXXX,但是對于基本數(shù)據(jù)中布爾類型的數(shù)據(jù),又有一套規(guī)定,其getter和setter方法是isXXX()setXXX。但是包裝類型都是以get開頭
        2.這種方式在某些時候是可以正常運行的,但是在一些rpc框架里面,當反向解析讀取到isSuccess()方法的時候,rpc框架會“以為”其對應(yīng)的屬性值是success,而實際上其對應(yīng)的屬性值是isSuccess,導(dǎo)致屬性值獲取不到,從而拋出異常。
        學習資料:Java進階視頻資源

        總結(jié)

        1、boolean類型的屬性值不建議設(shè)置為is開頭,否則會引起rpc框架的序列化異常。
        2、如果強行將IDE自動生成的isSuccess()方法修改成getSuccess(),也能獲取到Success屬性值,若兩者并存,則之后通過getSuccess()方法獲取Success屬性值。
        工作中使用基本類型的數(shù)據(jù)好還是包裝類好
        咱們舉個例子,一個計算盈利的系統(tǒng),其盈利比例有正有負,若使用了基本類型bouble定義了數(shù)據(jù),當RPC調(diào)用時,若出現(xiàn)了問題,本來應(yīng)該返回錯誤的,但是由于使用了基本類型,返回了0.0,系統(tǒng)會認為沒有任何問題,今年收支平衡,而不會發(fā)現(xiàn)其實是出現(xiàn)了錯誤。
        若使用了包裝數(shù)據(jù)類型Double,當RPC調(diào)用失敗時,會返回null,這樣直接就能看到出現(xiàn)問題了,而不會因為默認值的問題影響判斷。
        其實阿里java開發(fā)手冊中對于這個也有強制規(guī)定:
        因此,這里建議大家POJO中使用包裝數(shù)據(jù)類型,局部變量使用基本數(shù)據(jù)類型。
        -?END -

        最近熱文

        ? ?某科技公司領(lǐng)導(dǎo)稱80后該退出IT行業(yè),網(wǎng)友炸了!
        ? ?Java 中的屠龍之術(shù):如何修改語法樹?
        ? ?程序員之天梯排行榜,你在哪一級?
        ? ?提高千倍效率的 Java 代碼小技巧

        瀏覽 33
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            男人和女人的性生活视频 | 国产精品久久久久久久无码蜜臀 | 男女网站免费 | 91丨九色丨偷拍老熟女 | 免费男人下部进女人下部视频 | 日韩精品成人无码免费 | 免费又色又爽无遮挡的扒胸罩 | 日逼日韩 | 凹凸四虎在线视频 | 99视频免费在线 |