当前位置:首页 > 单片机 > 程序员小灰
[导读]作者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的返回值中使用包装类型的原因。

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

2026年3月25日,中国半导体行业迎来了一个足以载入史册的时刻。阿里巴巴达摩院正式发布了其最新一代RISC-V架构处理器——玄铁950(C950)。这款芯片的问世,不仅仅是一次常规的产品迭代,更是一次对全球高性能CPU...

关键字: 玄铁950 平头哥 阿里巴巴

3月24日消息,今日,在西门子RXD大会上,阿里巴巴集团主席蔡崇信与西门子高管对话时明确表示,AI不会取代CEO,该岗位永远安全。

关键字: 阿里巴巴 AI

3月19日,阿里巴巴集团发布2026财年三季度(自然年2025年四季度)业绩,阿里AI相关产品收入连续十个季度实现三位数同比增长,首次在财报中亮相的平头哥自研GPU实现规模化量产并成功商业化,“千问+悟空”双箭齐发彰显了...

关键字: 阿里巴巴 AI

1月27日消息,近日,Intel图形部门代表人物Tom Petersen在接受采访时表示,暂无计划推出类似AMD Strix Halo那样的高功耗集显方案。

关键字: 阿里巴巴 AI

香港2026年1月22日 /美通社/ -- 近日,香港航空宣布与阿里巴巴旗下飞猪及千问App达成深度AI战略合作。作为首批入驻千问App"AI订机票"功能的航司,香港航空将在飞猪AI及千问A...

关键字: APP AI 模型 阿里巴巴

12月23日消息,据报道,阿里巴巴正考虑向AMD下单订购40000-50000颗MI308 AI芯片。

关键字: 阿里巴巴 AI

当生成式AI掀起新一轮算力需求浪潮时,AI计算正经历一场深刻的架构革命。当服务器机柜成为阿里巴巴达摩院玄铁的ICCAD2025 展台C位,这恰恰标志着RISC-V正在从消费电子向高性能服务器突破,其模块化架构与生态创新正...

关键字: RISC-V 阿里巴巴 玄铁 AI

杭州2025年11月11日 /美通社/ -- 万豪国际集团日近日宣布与阿里巴巴集团达成AI时代战略合作伙伴关系,双方将在中国市场围绕云基础设施、AI应用创新等领域深度合作,为宾客创造个性化、高品质的旅行体验。 从左至右...

关键字: 阿里巴巴 AI 数字化 AN

9月24日消息,在今日举办的2025云栖大会上,阿里巴巴CEO吴泳铭在分享中指出,通义千问选择开放开源的路线,这背后的目标是希望打造“AI时代的Android系统”。

关键字: 阿里巴巴 AI

9月4日消息,日前,网传字节跳动整个芯片团队权限被注销,业务从集团独立,变更至新的主体且未提供N+1的赔偿。

关键字: 字节跳动 腾讯 阿里巴巴
关闭