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 類(lèi)型變量用 isXXX?

        共 1803字,需瀏覽 4分鐘

         ·

        2021-02-11 14:00

        點(diǎn)擊上方“藍(lán)色字體”,選擇“設(shè)為星標(biāo)”

        做積極的人,而不是積極廢人!

        來(lái)源:blog.csdn.net/belongtocode/

        article/details/100635246


        背景

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

        例子:

        1.其他非boolean類(lèi)型
        private?String?isHot;
        public?String?getIsHot()?{
        ????????return?isHot;
        ????????}
        ????????2.boolean類(lèi)型
        private?boolean?isHot;
        public?boolean?isHot()?{
        ????????return?isHot;
        ????????}
        ????????3.包裝類(lèi)型
        private?Boolean?isHot;
        public?Boolean?getHot()?{
        ????????return?isHot;
        ????????}
        ????????4.不以is開(kāi)頭
        private?boolean?hot;
        public?boolean?isHot()?{
        ????????return?hot;
        ????????}
        ????????5.包裝類(lèi)型
        private?Boolean?hot;
        public?Boolean?getHot()?{
        ????????return?hot;
        ????????}

        阿里巴巴規(guī)范

        其實(shí)阿里巴巴發(fā)布的java開(kāi)發(fā)手冊(cè)中就寫(xiě)明了,強(qiáng)制規(guī)定,布爾類(lèi)型的數(shù)據(jù),無(wú)論是boolean還是Boolean都不準(zhǔn)使用isXXX來(lái)命名

        圖片
        • 對(duì)于非boolean類(lèi)型的參數(shù),getter和setter方法命名的規(guī)范是以get和set開(kāi)頭
        • 對(duì)于boolean類(lèi)型的參數(shù),setter方法是以set開(kāi)頭,但是getter方法命名的規(guī)范是以is開(kāi)頭
        • 包裝類(lèi)自動(dòng)生成的getter和setter方法的名稱(chēng)都是getXXX()和setXXX()
        1. 其實(shí)javaBeans規(guī)范中對(duì)這些均有相應(yīng)的規(guī)定,基本數(shù)據(jù)類(lèi)型的屬性,其getter和setter方法是getXXX()和setXXX,但是對(duì)于基本數(shù)據(jù)中布爾類(lèi)型的數(shù)據(jù),又有一套規(guī)定,其getter和setter方法是isXXX()和setXXX。但是包裝類(lèi)型都是以get開(kāi)頭
        2. 這種方式在某些時(shí)候是可以正常運(yùn)行的,但是在一些rpc框架里面,當(dāng)反向解析讀取到isSuccess()方法的時(shí)候,rpc框架會(huì)“以為”其對(duì)應(yīng)的屬性值是success,而實(shí)際上其對(duì)應(yīng)的屬性值是isSuccess,導(dǎo)致屬性值獲取不到,從而拋出異常。

        1、boolean類(lèi)型的屬性值不建議設(shè)置為is開(kāi)頭,否則會(huì)引起rpc框架的序列化異常。

        2、如果強(qiáng)行將IDE自動(dòng)生成的isSuccess()方法修改成getSuccess(),也能獲取到Success屬性值,若兩者并存,則之后通過(guò)getSuccess()方法獲取Success屬性值。

        工作中使用基本類(lèi)型的數(shù)據(jù)好還是包裝類(lèi)好?

        咱們舉個(gè)例子,一個(gè)計(jì)算盈利的系統(tǒng),其盈利比例有正有負(fù),若使用了基本類(lèi)型bouble定義了數(shù)據(jù),當(dāng)RPC調(diào)用時(shí),若出現(xiàn)了問(wèn)題,本來(lái)應(yīng)該返回錯(cuò)誤的,但是由于使用了基本類(lèi)型,返回了0.0,系統(tǒng)會(huì)認(rèn)為沒(méi)有任何問(wèn)題,今年收支平衡,而不會(huì)發(fā)現(xiàn)其實(shí)是出現(xiàn)了錯(cuò)誤。若使用了包裝數(shù)據(jù)類(lèi)型Double,當(dāng)RPC調(diào)用失敗時(shí),會(huì)返回null,這樣直接就能看到出現(xiàn)問(wèn)題了,而不會(huì)因?yàn)槟J(rèn)值的問(wèn)題影響判斷。

        其實(shí)阿里java開(kāi)發(fā)手冊(cè)中對(duì)于這個(gè)也有強(qiáng)制規(guī)定:

        圖片

        因此,這里建議大家POJO中使用包裝數(shù)據(jù)類(lèi)型,局部變量使用基本數(shù)據(jù)類(lèi)型。


        -?end?-


        用心分享面試知識(shí),做有溫度的攻城獅

        每天記得對(duì)自己說(shuō):你是最棒的!


        往期推薦:

        每一個(gè)“好看”,都是對(duì)我們最大的幫助

        瀏覽 10
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        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>
            成年黄网站18禁免费观看在线 | 九色PORNY9l自拍视频 | 偷牌自拍 | 日韩三级在线播放 | 天天日天天弄天天操i | 日本A∨在线 | 中国操逼小视频 | 娇妻与公h喂奶采薇 | 乱操逼视频 | 古代喂奶肉多荤文高h |