日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

为什么阿里巴巴要求 POJO 中不能使用基本数据类型?

發布時間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么阿里巴巴要求 POJO 中不能使用基本数据类型? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

△Hollis, 一個對Coding有著獨特追求的人△

這是Hollis的第?389?篇原創分享

作者 l Hollis

來源 l Hollis(ID:hollischuang)

在《阿里巴巴Java開發手冊》中,對于POJO中如何選擇變量的類型以及 RPC 接口中的返回值類型也有著一些規定:

這里強制要求使用包裝類型,原因是什么呢?

我們來看一段簡單的代碼

/***?@author?Hollis*/public?class?BooleanMainTest?{public?static?void?main(String[]?args)?{Model?model1?=?new?Model();System.out.println("default?model?:?"?+?model1);}}class?Model?{/***?定一個Boolean類型的success成員變量*/private?Boolean?success;/***?定一個boolean類型的failure成員變量*/private?boolean?failure;/***?覆蓋toString方法,使用Java?8?的StringJoiner*/@Overridepublic?String?toString()?{return?new?StringJoiner(",?",?Model.class.getSimpleName()?+?"[",?"]").add("success="?+?success).add("failure="?+?failure).toString();}}

以上代碼輸出結果為:

default?model?:?Model[success=null,?failure=false]

可以看到,當我們沒有設置Model對象的字段的值的時候,Boolean類型的變量會設置默認值為null,而boolean類型的變量會設置默認值為false。

即Boolean對象的默認值是null,boolean基本數據類型的默認值是false

也就是說,包裝類型的默認值都是null,而基本數據類型的默認值是一個固定值,如boolean是false,byte、short、int、long是0,float是0.0f等;

我們再舉一個扣費的例子,我們做一個扣費系統,扣費時需要從外部的定價系統中通過 RPC 請求讀取一個費率的值,我們預期該接口的返回值中會包含一個浮點型的費率字段。當我們取到這個值得時候就使用公式:金額*費率=費用 進行計算,計算結果進行劃扣。

如果由于計費系統異常,他可能會返回個默認值,如果這個字段是Double類型的話,該默認值為null,如果該字段是double類型的話,該默認值為0.0。

如果扣費系統對于該費率返回值沒做特殊處理的話,拿到null值進行計算會直接報錯,阻斷程序。拿到0.0可能就直接進行計算,得出接口為0后進行扣費了。這種異常情況就無法被感知。

有人說,那我可以對0.0做特殊判斷,如果是0一樣可以阻斷報錯啊。但是,這時候就會產生一個問題,如果允許費率是0的場景又怎么處理呢?

所以,使用基本數據類型只會讓方案越來越復雜,坑越來越多。

這種使用包裝類型定義變量的方式,通過異常來阻斷程序,進而可以被識別到這種線上問題。如果使用基本數據類型的話,系統可能不會報錯,進而認為無異常。

當然,以上的選擇是針對一些電商、支付、金融等場景,可以犧牲暫時的可用性的場景,如果是對于某些軟件系統,可以容忍數據不準,但是不能系統不可用的情況要另當別論。

以上,就是要求在POJO和RPC的返回值中使用包裝類型的原因。

技術交流群

最近有很多人問,有沒有讀者交流群,想知道怎么加入。

最近我創建了一些群,大家可以加入。交流群都是免費的,只需要大家加入之后不要隨便發廣告,多多交流技術就好了。

目前創建了多個交流群,全國交流群、北上廣杭深等各地區交流群、面試交流群、資源共享群等。

有興趣入群的同學,可長按掃描下方二維碼,一定要備注:全國 Or 城市 Or 面試 Or 資源,根據格式備注,可更快被通過且邀請進群。

▲長按掃描

往期推薦

確診新冠小米員工的活動軌跡曝光!這就是人間真實嗎?


臺灣一公司因停電,讓員工手寫代碼...


14家互聯網公司裁員(1-2月裁員清單)

如果你喜歡本文,

請長按二維碼,關注?Hollis.

轉發至朋友圈,是對我最大的支持。

點個?在看?

喜歡是一種感覺

在看是一種支持

↘↘↘

總結

以上是生活随笔為你收集整理的为什么阿里巴巴要求 POJO 中不能使用基本数据类型?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。