成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么阿里巴巴強制要求使用包裝類型定義屬性?

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

[[428024]]

在阿里巴巴Java開發手冊中,對于POJO中如何選擇變量的類型也有著一些規定:

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

我們來看一段簡單的代碼

  1.  /** 
  2.  
  3.  * @author Hollis 
  4.  
  5.  */ 
  6.  
  7. public class BooleanMainTest { 
  8.  
  9.     public static void main(String[] args) { 
  10.  
  11.         Model model1 = new Model(); 
  12.  
  13.         System.out.println("default model : " + model1); 
  14.  
  15.     } 
  16.  
  17.  
  18.  
  19.  
  20. class Model { 
  21.  
  22.     /** 
  23.  
  24.      * 定一個Boolean類型的success成員變量 
  25.  
  26.      */ 
  27.  
  28.     private Boolean success; 
  29.  
  30.     /** 
  31.  
  32.      * 定一個boolean類型的failure成員變量 
  33.  
  34.      */ 
  35.  
  36.     private boolean failure; 
  37.  
  38.  
  39.  
  40.     /** 
  41.  
  42.      * 覆蓋toString方法,使用Java 8 的StringJoiner 
  43.  
  44.      */ 
  45.  
  46.     @Override 
  47.  
  48.     public String toString() { 
  49.  
  50.         return new StringJoiner(", ", Model.class.getSimpleName() + "[""]"
  51.  
  52.             .add("success=" + success) 
  53.  
  54.             .add("failure=" + failure) 
  55.  
  56.             .toString(); 
  57.  
  58.     } 
  59.  

以上代碼輸出結果為:

  1. default model : Model[success=null, failure=false

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

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

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

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

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

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

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

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

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

 

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

 

責任編輯:武曉燕 來源: Hollis
相關推薦

2020-09-14 09:47:56

Java開發類型

2019-06-26 07:54:53

ArrayListsubList源碼

2022-03-14 09:41:10

POJO類型系統

2023-04-03 07:03:51

阿里巴巴List元素

2020-09-08 16:25:18

Apache BeancopyJava

2020-07-30 12:16:33

阿里巴巴Apache對象

2018-10-16 15:34:17

阿里巴巴Apache Flin大數據

2021-10-20 14:53:31

Foreach強制阿里巴巴

2021-08-04 17:20:30

阿里巴巴AsyncJava

2013-08-22 09:26:38

去IOE王堅

2019-09-04 11:02:54

繼承層次組合

2019-09-02 15:20:28

Java開發繼承

2016-09-21 20:28:55

阿里巴巴IOE

2018-12-29 15:41:41

阿里巴巴程序員serialVersi

2020-09-22 11:40:53

BigDecimalequalsJava

2025-04-17 08:47:23

2021-09-07 17:22:43

阿里巴巴辭職高薪

2010-06-28 10:43:47

2022-08-22 08:07:45

DruidMySQL密碼

2022-09-05 10:06:21

MySQL外循環內循環
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久久综合 | 亚洲一区二区在线 | 精品国产不卡一区二区三区 | 亚洲女人的天堂 | 久久激情视频 | 国产视频观看 | 成人在线一区二区 | 精品一区二区三区在线播放 | av网站在线看 | 中文字幕韩在线第一页 | 国产精品1区| 精品真实国产乱文在线 | 精品影院 | 午夜精| 久久久久久久久久久久91 | 欧美综合一区二区三区 | 国产精品美女久久久久久久网站 | 夜夜爆操 | 中文字幕日韩欧美一区二区三区 | 国产欧美日韩 | 日韩欧美精品一区 | 国产精品视频一二三区 | 日韩在线h| 精品国产欧美 | 国产激情视频在线观看 | 亚洲欧美日韩久久 | www中文字幕 | 亚洲精品一区二区在线观看 | 欧美日韩中 | 国产99视频精品免费视频7 | 亚洲一区二区三区四区五区中文 | 91福利在线观看视频 | 女同videos另类 | 久久久久国产 | 精品中文字幕一区二区三区 | 91av在线免费看 | 一区观看 | 天天爱天天操 | 欧美午夜精品 | 日韩在线不卡 | 日本电影免费完整观看 |