当前位置:首页 > 公众号精选 > 程序员小灰
[导读]作者lHollis来源lHollis(ID:hollischuang)在阿里巴巴Java开发手册中,对于POJO中如何选择变量的类型也有着一些规定:这里强制要求使用包装类型,原因是什么呢?我们来看一段简单的代码     /**     * @author Hollis     *...


作者 l Hollis来源 l Hollis(ID:hollischuang)阿里巴巴Java开发手册中,对于POJO中如何选择变量的类型也有着一些规定:

这里强制要求使用包装类型,原因是什么呢?

我们来看一段简单的代码

     /**

     * @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();

        }

    }
以上代码输出结果为:

    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的返回值中使用包装类型的原因。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

最新消息,近些年持续保持低调的阿里巴巴创始人马云今天在阿里内网发表题为《致改革致创新》的帖子,内容高度肯定蔡崇信和吴泳铭组成的新管理层的变革勇气,称阿里巴巴已重回健康成长轨道,并支持继续改革。

关键字: 马云 阿里巴巴

据悉,此前官方确认蚂蚁集团位于之江大桥北侧的总部地块已经退地,该消息引发关注,与此同时蚂蚁集团暂缓上市的消息也不胫而走,随即之江楼市也应声下跌,曾经因蚂蚁集团入驻预期而高涨的房价如今已大打折扣。

关键字: 蚂蚁集团 阿里巴巴

4月6日消息,阿里巴巴集团董事会主席蔡崇信近日接受了挪威主权财富基金投资总监Nicolai Tangen的采访。谈及芯片短缺和限制,他认为中国有能力自己制造高端GPU,并不一定要用英伟达。

关键字: 蔡崇信 阿里巴巴

近日,阿里巴巴董事会主席、联合创始人蔡崇信接受了一次投资人的播客专访。在这场访谈中,蔡崇信表示,“过去几年里,当我们做内部审视和自我反思时,我们知道阿里落后了,因为我们忘记了真正的客户是谁。我们的客户是使用APP进行购物...

关键字: 蔡崇信 阿里巴巴 用户体验

业内消息,近日杭州市规划部门称位于浙江的“蚂蚁之江总部”已退地。值得一提的是,蚂蚁二期地块早已退地,如今一期的退地也得到了官方回复。

关键字: 蚂蚁集团 阿里巴巴

业内消息,据阿里巴巴内部人士透露,1688 近期启动全面入淘,先期开设三家店铺,后续这些店铺将整合成一个类似天猫超市的频道,并在淘宝推出 1688 严选贴牌的源头厂货。这意味着,1688 将携带百万源头厂商直接入驻淘宝。

关键字: 阿里巴巴 1688 淘宝

最新消息,今天阿里巴巴突发公告称,旗下物流子公司菜鸟(菜鸟智慧物流网络有限公司)已撤回在香港联交所的首次公开发行(IPO)和上市申请。

关键字: 阿里巴巴 菜鸟 上市 IPO

3月15日消息,据媒体报道,欧盟委员会发布公告宣布,已正式对中国科技巨头阿里巴巴旗下的国际电子商务平台全球速卖通展开深入调查。

关键字: 阿里巴巴 马云 自动驾驶

业内消息,近日阿里又再次开启了不同业务集团之间的自由转岗,自去年8月关闭半年后该通道重新开通。据悉,淘天集团和国际数字商业集团之间员工恢复自由流动,预计将于3月中启动,近期已开始试点员工转岗打通、工龄延续,淘天员工转岗至...

关键字: 阿里巴巴

最新消息,昨天晚间阿里巴巴集团发布了截至2023年12月31日的2024财年第三季度财报。财报数据显示,阿里巴巴第三季度营收2603.5亿元,低于市场预期2612.47亿元,上年同期2477.56亿元,同比增长5%,为三...

关键字: 阿里巴巴 财报
关闭
关闭