<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 1921字,需瀏覽 4分鐘

           ·

          2021-10-17 08:44

          歡迎關注,回復”Java“獲面試寶典

          來源: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ī)范中對這些均有相應的規(guī)定,基本數(shù)據(jù)類型的屬性,其getter和setter方法是getXXX()setXXX,但是對于基本數(shù)據(jù)中布爾類型的數(shù)據(jù),又有一套規(guī)定,其getter和setter方法是isXXX()setXXX。但是包裝類型都是以get開頭

          2.這種方式在某些時候是可以正常運行的,但是在一些rpc框架里面,當反向解析讀取到isSuccess()方法的時候,rpc框架會“以為”其對應的屬性值是success,而實際上其對應的屬性值是isSuccess,導致屬性值獲取不到,從而拋出異常。

          總結(jié)

          1、boolean類型的屬性值不建議設置為is開頭,否則會引起rpc框架的序列化異常。

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

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

          咱們舉個例子,一個計算盈利的系統(tǒng),其盈利比例有正有負,若使用了基本類型bouble定義了數(shù)據(jù),當RPC調(diào)用時,若出現(xiàn)了問題,本來應該返回錯誤的,但是由于使用了基本類型,返回了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ù)類型。

          PS:如果覺得我的分享不錯,歡迎大家隨手點贊、在看。

          (完)




          加我"微信"?獲取一份 最新Java面試題資料

          請備注:666,不然不通過~


          最近好文


          1、GitHub 近兩萬 Star,可一鍵生成前后端代碼

          2、Spring 官方為什么建議構(gòu)造器注入?

          3、10000 字講清楚 Spring Boot 注解原理

          4、13個優(yōu)秀的 Vue 開源項目及合集推薦

          5、Java項目實戰(zhàn):利用注解 + 反射消除重復代碼



          最近面試BAT,整理一份面試資料Java面試BAT通關手冊,覆蓋了Java核心技術、JVM、Java并發(fā)、SSM、微服務、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。
          獲取方式:關注公眾號并回復?java?領取,更多內(nèi)容陸續(xù)奉上。
          明天見(??ω??)??
          瀏覽 25
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  麻豆久久鬼片 | 超碰在线大香蕉 172.86.93.25 | 成人污污污www | 蜜桃丰满熟妇av无码区不卡 | 久久高潮视频 |