日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 程序員小灰
[導(dǎo)讀]作者lHollis來源lHollis(ID:hollischuang)在阿里巴巴Java開發(fā)手冊中,對于POJO中如何選擇變量的類型也有著一些規(guī)定:這里強制要求使用包裝類型,原因是什么呢?我們來看一段簡單的代碼?????/**?????*?@author?Hollis?????*...


作者 l Hollis來源 l Hollis(ID:hollischuang)阿里巴巴Java開發(fā)手冊中,對于POJO中如何選擇變量的類型也有著一些規(guī)定:

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

我們來看一段簡單的代碼

?????/**

?????*?@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

?????????*/


????????@Override

????????public?String?toString()?{

????????????return?new?StringJoiner(",?",?Model.class.getSimpleName()? ?"[",?"]")

????????????????.add("success="? ?success)

????????????????.add("failure="? ?failure)

????????????????.toString();

????????}

????}
以上代碼輸出結(jié)果為:

????default?model?:?Model[success=null,?failure=false]可以看到,當(dāng)我們沒有設(shè)置Model對象的字段的值的時候,Boolean類型的變量會設(shè)置默認(rèn)值為null,而boolean類型的變量會設(shè)置默認(rèn)值為false。

即對象的默認(rèn)值是null,boolean基本數(shù)據(jù)類型的默認(rèn)值是false

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

我們再舉一個扣費的例子,我們做一個扣費系統(tǒng),扣費時需要從外部的定價系統(tǒng)中讀取一個費率的值,我們預(yù)期該接口的返回值中會包含一個浮點型的費率字段。當(dāng)我們?nèi)〉竭@個值得時候就使用公式:金額*費率=費用 進行計算,計算結(jié)果進行劃扣。

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

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

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

所以,使用基本數(shù)據(jù)類型只會讓方案越來越復(fù)雜,坑越來越多。

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

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

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉