<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>

          枚舉很好用啊!為啥阿里不建議返回值用枚舉??

          共 1319字,需瀏覽 3分鐘

           ·

          2021-10-20 11:34

          來源:zhihu.com/question/52760637

          • 提問
          • 看看作者孤盡是怎么說的
          • 不過,另一位網(wǎng)友Brian的回答也很通俗易懂

          提問

          小伙伴說在一次接口定義時,使用了枚舉,結(jié)果被其它人深深嫌棄,說不好拓展。

          為什么會被嫌棄呢?我們先來看看阿里開發(fā)手冊關(guān)于枚舉使用的建議

          從手冊可以看出,定義和使用枚舉,阿里開發(fā)手冊都是支持的,但是為啥,返回值就要反對了呢?

          看看作者孤盡是怎么說的

          由于升級原因,導(dǎo)致雙方的枚舉類不盡相同,在接口解析,類反序列化時出現(xiàn)異常。Java中出現(xiàn)的任何元素,在Gosling的角度都會有背后的思考和邏輯(盡管并非絕對完美,但Java的頂層抽象已經(jīng)是天才級了),比如:接口、抽象類、注解、和本文提到的枚舉。

          枚舉有好處,類型安全,清晰直接,還可以使用等號來判斷,也可以用在switch中。

          它的劣勢也是明顯的,就是不能擴展。可是為什么在返回值和參數(shù)進行了區(qū)分呢,如果不兼容,那么兩個都有問題,怎么允許參數(shù)可以有枚舉。當(dāng)時的考慮,如果參數(shù)也不能用,那么枚舉幾乎無用武之地了。參數(shù)輸出,畢竟是本地決定的,你本地有的,傳送過去,向前兼容是不會有問題的。但如果是接口返回,就比較惡心了,因為解析回來的這個枚舉值,可能本地還沒有,這時就會拋出序列化異常。

          比如:你的本地枚舉類,有一個天氣 Enum:SUNNY, RAINY, CLOUDY,如果根據(jù)天氣計算心情的方法:guess(WeatcherEnum xx),傳入這三個值都是可以的。返回值:Weather guess(參數(shù)),那么對方運算后,返回一個SNOWY,本地枚舉里沒有這個值,傻眼了。(程序汪理解是考慮兼容性問題,畢竟項目迭代升級快,容易出現(xiàn)兼容性問題,當(dāng)然都是自己的項目之間調(diào)用能保證安全,我感覺用也沒事

          不過,另一位網(wǎng)友Brian的回答也很通俗易懂

          枚舉,就是把已知的全部羅列出來。作為二方/三方庫的提供者,我支持什么,你們就是用什么,這樣是安全的。庫版本升級后我支持了更多,你不知道情況下自然不會使用,反正我不支持的參數(shù)你不可能傳遞給我,所以作為輸入,枚舉簡直就是安全保障。但作為返回值,情況就反過來了。我先告訴你這些這些可以有,然后你規(guī)定這些這些可以有,除此之外都沒有。但是,是我說了算而不是你,所以你的規(guī)定狗屁不是。沒有仔細看手冊(假設(shè)有的話)的每一個字,鬼知道升級后的api會返回什么,拋異常的可能性直趨百分百。

          程序汪資料鏈接

          程序汪接的7個私活都在這里,經(jīng)驗整理

          Java項目分享 ?最新整理全集,找項目不累啦 04版

          堪稱神級的Spring Boot手冊,從基礎(chǔ)入門到實戰(zhàn)進階

          臥槽!字節(jié)跳動《算法中文手冊》火了,完整版 PDF 開放下載!

          臥槽!阿里大佬總結(jié)的《圖解Java》火了,完整版PDF開放下載!

          字節(jié)跳動總結(jié)的設(shè)計模式 PDF 火了,完整版開放下載!

          歡迎添加程序汪個人微信 itwang008? 進粉絲群或圍觀朋友

          瀏覽 103
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  国产成人精品小电影 | 18禁欧美日韩 | 在线99视频 | 久久女人网 | 色色五月丁香婷婷 |