2018-05-22 POJO中属性使用包装类型

ALIbaba的开发手册中有一段强制要求pojo属性使用包装类

关于基本数据类型与包装数据类型的使用标准如下: 
1) 【强制】所有的POJO类属性必须使用包装数据类型。 
2) 【强制】RPC方法的返回值和参数必须使用包装数据类型。 
3) 【推荐】所有的局部变量使用基本数据类型。 
    
说明:POJO类属性没有初值是提醒使用者在需要使用时,必须自己显式地进行赋值,任何NPE问题,或者入库检查,都由使用者来保证。 
     正例:数据库的查询结果可能是null,因为自动拆箱,用基本数据类型接收有NPE风险。
     反例:比如显示成交总额涨跌情况,即正负x%,x为基本数据类型,调用的RPC服务,调用不成功时,返回的是默认值,页面显示:0%,
          这是不合理的,应该显示成中划线-。所以包装数据类型的null值,能够表示额外的信息,如:远程调用失败,异常退出。

为什么要在这么设计呢
举几个例子:
(1)所有的sql使用的默认类型都是null,如果你把POJO中的映射属性类型写为基本类型,当查找不到记录的时候,返回null赋给基本类型就会出错 ;

(2)包装类型都可以相应的转化为基本类型,如果你设置为基本类型比如int的话,它默认初始化为0,但0本身就代表着一种含义,如果为null的话,既好理解,也可以方便开发人员转化!而且很多xml配置中默认都是null。

(3)简单来说就是我们如果自定义了一个Student类,其中有一个属性是成绩score,如果用Integer而不用int定义,一次考试,学生可能没考,值是null,也可能考了,但考了0分,值是0,这两个表达的状态明显不一样.

你可能感兴趣的:(2018-05-22 POJO中属性使用包装类型)