千家信息网

为什么不建议boolean类型变量用isXXX

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,这篇文章主要讲解了"为什么不建议boolean类型变量用isXXX",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"为什么不建议boolean类型变量用i
千家信息网最后更新 2024年11月30日为什么不建议boolean类型变量用isXXX

这篇文章主要讲解了"为什么不建议boolean类型变量用isXXX",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"为什么不建议boolean类型变量用isXXX"吧!

背景: 平时工作中大家经常使用到boolean以及Boolean类型的数据,前者是基本数据类型,后者是包装类,为什么不推荐使用isXXX来命名呢?到底是用基本类型的数据好呢还是用包装类好呢?

例子:

1.其他非boolean类型private String isHot;public String getIsHot() {    return isHot;}2.boolean类型private boolean isHot;public boolean isHot() {    return isHot;}3.包装类型private Boolean isHot;public Boolean getHot() {    return isHot;}4.不以is开头private boolean hot;public boolean isHot() {    return hot;}5.包装类型private Boolean hot;public Boolean getHot() {    return hot;}

其实阿里巴巴发布的java开发手册中就写明了,强制规定,布尔类型的数据,无论是boolean还是Boolean都不准使用isXXX来命名。

  • 对于非boolean类型的参数,getter和setter方法命名的规范是以get和set开头

  • 对于boolean类型的参数,setter方法是以set开头,但是getter方法命名的规范是以is开头

  • 包装类自动生成的getter和setter方法的名称都是getXXX()和setXXX()

  • 其实javaBeans规范中对这些均有相应的规定,基本数据类型的属性,其getter和setter方法是getXXX()和setXXX,但是对于基本数据中布尔类型的数据,又有一套规定,其getter和setter方法是isXXX()和setXXX。但是包装类型都是以get开头

  • 这种方式在某些时候是可以正常运行的,但是在一些rpc框架里面,当反向解析读取到isSuccess()方法的时候,rpc框架会"以为"其对应的属性值是success,而实际上其对应的属性值是isSuccess,导致属性值获取不到,从而抛出异常。

总结:

1、boolean类型的属性值不建议设置为is开头,否则会引起rpc框架的序列化异常。

2、如果强行将IDE自动生成的isSuccess()方法修改成getSuccess(),也能获取到Success属性值,若两者并存,则之后通过getSuccess()方法获取Success属性值。

工作中使用基本类型的数据好还是包装类好

咱们举个例子,一个计算盈利的系统,其盈利比例有正有负,若使用了基本类型double定义了数据,当RPC调用时,若出现了问题,本来应该返回错误的,但是由于使用了基本类型,返回了0.0,系统会认为没有任何问题,今年收支平衡,而不会发现其实是出现了错误。若使用了包装数据类型Double,当RPC调用失败时,会返回null,这样直接就能看到出现问题了,而不会因为默认值的问题影响判断。

其实阿里java开发手册中对于这个也有强制规定:

因此,这里建议大家POJO中使用包装数据类型,局部变量使用基本数据类型。

感谢各位的阅读,以上就是"为什么不建议boolean类型变量用isXXX"的内容了,经过本文的学习后,相信大家对为什么不建议boolean类型变量用isXXX这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

类型 数据 方法 包装 属性 建议 开头 变量 问题 框架 还是 学习 例子 内容 参数 布尔 手册 时候 盈利 系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 三本可以进的软件开发公司 阿里云修改dns服务器 数据库维护计划怎么自动删除 手机软件开发共同合作协议 达梦杯国产数据库 数据库单表字段数量多 手抄报网络安全教育图片 网页设计登录界面代码数据库 电脑我的世界无法连接到服务器 行政法规定落实网络安全 软件开发 sd plsq连接本地数据库 靠谱的erp财务软件开发流程 软件开发过程敏捷vs规范 徐汇区管理软件开发定制价格 上海微量网络技术有限公司 mc魂师生存服务器怎么吸收魂环 三级网络安全技术题型 大连软件开发软件公司有哪些 机器人怎么做软件开发 宿迁小型网络技术厂家价格 开展人才数据库建设 无法访问可用性数据库怎么办 青浦区品牌软件开发定制要多少钱 网络安全包括哪些安全策略 数据库的基础语句 网络安全板块没戏了吗 常见的数据库软件 嘉兴智慧工厂软件开发 云南pdu服务器电源价格
0