背??景人们在日常工作中,经常会用到boolean和布尔数据。前者是基本数据类型,后者是封装类。为什么不推荐使用isXXX来命名呢?使用基本类型的数据或包装类更好吗?示例1.其他非布尔类型privateStringisHot;publicStringgetIsHot(){返回isHot;}2。布尔型privatebooleanisHot;publicbooleanisHot(){返回isHot;}3。封装类型privateBooleanisHot;publicBooleangetHot(){returnisHot;}4。不以isprivatebooleanhot开头;publicbooleanisHot(){返回热点;}5.封装类型privateBooleanhot;publicBooleangetHot(){返回热点;}阿里巴巴实际发布java开发手册中有说明,强制要求布尔型数据,无论是boolean还是boolean,都不允许使用isXXX来命名非boolean类型的参数。对于boolean类型的参数,setter方法以set开头,而getter方法的名称以is开头。包装类自动生成的getter和setter方法的名称是getXXX()和setXXX()1。其实这些在javaBeans规范中都有相应的规定。基本数据类型的属性的getter和setter方法是getXXX()和setXXX,但是对于基本数据中Boolean类型的数据,还有另外一套规定。getter和setter方法是isXXX()和setXXX。但是封装类型都是get2开头的,这个方法在某些时候是可以正常工作的,但是在某些rpc框架中,当逆向分析读取到isSuccess()方法时,rpc框架会“认为”它对应的属性值为success,但实际上它对应的属性值是isSuccess,导致属性值获取不到,从而抛出异常。总结1、不建议设置boolean类型的属性值以is开头,否则会导致rpc框架的序列化异常。2、如果强行把IDE自动生成的isSuccess()方法改成getSuccess(),同样可以得到Success属性的值。如果两者共存,则可以使用getSuccess()方法获取Success属性的值。工作中使用基本类型数据好还是封装类好?让我们举个例子。对于利润计算系统,利润率可以是正的也可以是负的。如果使用基本类型bouble来定义数据,在RPC调用时,如果有问题,应该返回错误,但是因为使用了基本类型,所以返回0.0,系统会认为没有问题,而且今年国际收支平衡,不会发现其实有差错。如果使用包裹数据类型Double,当RPC调用失败时,会返回null,这样可以直接看出有问题,不会因为默认值的问题而影响判断。其实阿里java开发手册对此也有强制规定:因此,建议大家在POJO中使用wrapper数据类型,局部变量使用基本数据类型。来源:blog.csdn.net/belongtocode/article/details/100635246
