当前位置: 首页 > 后端技术 > Java

为什么阿里强制要求boolean类型的变量不能以is开头?_0

时间:2023-04-01 17:24:53 Java

来源:blog.csdn.net/belongtocode/article/details/100635246背景人们在日常工作中,经常会用到boolean和布尔数据。前者是基本数据类型,后者是包装类。为什么不推荐isXXX?给它命名?使用基本类型的数据或包装类更好吗?示例1.其他非布尔类型privateStringisHot;publicStringgetIsHot(){returnisHot;}2.布尔型privatebooleanisHot;publicbooleanisHot(){returnisHot;}3.封装类型privateBooleanisHot;publicBooleangetHot(){returnisHot;}4.没有开始是privatebooleanhot;publicbooleanisHot(){returnhot;}5.封装类型privateBooleanhot;publicBooleangetHot(){返回热点;}阿里巴巴实际发布java开发手册中有说明,强制要求布尔型数据,无论是boolean还是boolean,都不允许使用isXXX来命名非boolean类型的参数。对于boolean类型的参数,setter方法以set开头,而getter方法的名称以is开头。包装类自动生成的getter和setter方法的名称是getXXX()和setXXX()。完整版手册在Java核心技术公众号后台回复:手册。1、其实javaBeans规范中对这些都有相应的规定。基本数据类型的属性的getter和setter方法是getXXX()和setXXX,但是对于基本数据中Boolean类型的数据,还有另外一套规定。getter和setter方法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数据类型,局部变量使用基本数据类型。近期热点文章推荐:1.1,000+Java面试题及答案(2021最新版)2.别在满屏的if/else中,试试策略模式,真的很好吃!!3.操!Java中xx≠null的新语法是什么?4、SpringBoot2.6正式发布,一大波新特性。.5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!