Java布尔类型变量命名与类型问题

  • 1. Java变量命名与类型概述
  • 2. 使用isXXX来命名变量问题
  • 3. 基本类型与包装类选择问题

1. Java变量命名与类型概述

平时业务开发过程中,实体创建的时候很多同学习惯使用isXXX开头命名一些属性,比如isDeleted,isSupport,isUpper等等,Java开发手册中是不准使用isXXX来命名的,而且实体中强制使用包装类型。

这里讨论两个问题,一个是命名问题,以isXXX开头的变量;另一个是对象中使用包装类型的问题。

2. 使用isXXX来命名变量问题

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

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

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

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

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

代码验证

/*** 商品实体类** @author zrj* @since 2021/12/2**/
public class Goods {/*** 非布尔类型* 不带is开头:get与set方法正常* 带is开头 :get与set方法正常*/private String start;private String isStop;/*** boolean基本类型,没有get方法,而是以isXXX开头的方法,与setXXX的方法。* 不带is开头:正常isXXX,setXXX* 带is开头 :is与set方法都会自动去掉属性名称中的is*/private boolean lower;private boolean isUpper;/*** Boolean包装类型,正常getXXX,setXXX* 不带is开头:正常getXXX,setXXX* 带is开头 :get与set方法都会自动去掉属性名称中的is*/private Boolean del;private Boolean isDeleted;public String getStart() {return start;}public void setStart(String start) {this.start = start;}public String getIsStop() {return isStop;}public void setIsStop(String isStop) {this.isStop = isStop;}public boolean isLower() {return lower;}public void setLower(boolean lower) {this.lower = lower;}public boolean isUpper() {return isUpper;}public void setUpper(boolean upper) {isUpper = upper;}public Boolean getDel() {return del;}public void setDel(Boolean del) {this.del = del;}public Boolean getDeleted() {return isDeleted;}public void setDeleted(Boolean deleted) {isDeleted = deleted;}
}

3. 基本类型与包装类选择问题

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

阿里java开发手册中对于这个也有强制规定:
因此,这里建议大家POJO中使用包装数据类型,局部变量使用基本数据类型。

Java布尔类型变量命名与类型问题相关推荐

  1. java布尔类型定义_Java如何正确定义布尔类型变量的命名

    布尔类型变量命名success VS isSuccess success & isSuccess 皆可,命名都不存在歧义性,但是建议不加is 理由: 1.防止部分框架解析会引起序列化错误 反例 ...

  2. java定义boolean命名_阿里规范:为何boolean类型变量命名禁用is开头

    java中,对于非boolean类型的参数,getter和setpXMPater方法命名的规范是以get和set开头,如下: private String Success; public String ...

  3. 阿里巴巴对Java编程【命名风格】的规约

    转载自 阿里巴巴对Java编程[命名风格]的规约 命名风格 1. [强制]代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束. 反例: _name / __name / $Obje ...

  4. java包名命名规则_告别编码5分钟,命名2小时!史上最全的Java命名规范参考!

    简洁清爽的代码风格应该是大多数工程师所期待的.在工作中笔者常常因为起名字而纠结,命名已经成为我工作中的拦路虎,夸张点可以说是编程5分钟,命名两小时! 每个公司都有不同的标准,目的是为了保持统一,减少沟 ...

  5. Java从键盘输入n行字符串_Java十四天零基础入门-Java布尔类型

    不闲聊!!!不扯淡!!!小UP只分享Java相关的资源干货 Java布尔类型 在Java语言中布尔类型的值只包括true和false,没有其他值,不包括1和0,布尔类型的数据在开发中主要使用在逻辑判断 ...

  6. java类的命名规范_浅谈Java中的命名规范

    现代软件架构的复杂性需要协同开发完成,如何高效地协同呢? 答案是:制定一整套统一的规范. 无规矩不成方圆,无规范难以协同,比如,制订交通法规表面上是要限制行车权,实际上是保障公众的人身安全,试想如果没 ...

  7. Java包的命名规则

    Java包的命名规则 util:对应英文utility(实用工具),一般存放工具类,就像java.lang.util包一样存放着各种各样的工具类方便你编程,这里你可以放自己写好的工具类为自己的程序提供 ...

  8. Java基本方法命名

    Java基本方法命名 方法命名为[修饰符1,2,3] 返回值类型 方法名 (形式参数):并且是有return作为结束 无返回值的时候 必须要用指定为void 实参的数量,数值,及数据类型和次序,必须和 ...

  9. java 布尔值变成字符串,Java将布尔值转换为字符串

    本文概述 我们可以使用String.valueOf(boolean)方法将boolean转换为Java中的String. 另外, 我们可以使用Boolean.toString(boolean)方法, ...

最新文章

  1. css之其它技巧和经验列表
  2. 回归素材(part3)--机器学习基础从入门到求职
  3. 详解IMU标定经典论文:A Robust and Easy to Implement Method for IMU Calibration without External Equipments
  4. C语言发展历史,C语言特点,C语言利于弊,入门须知三招
  5. hdu 3572 Task Schedule 网络流
  6. 逆向课程第二讲,寻找main入口点
  7. 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结
  8. Android 四大组件学习之Service五
  9. IDEA阅读spring源码并调试
  10. mysql中文显示问号_从MySQL读取中文数据,显示???(问号)乱码的解决方法...
  11. imnoise, imnoise2 imnoise3
  12. 南航大学计算机专业硕士学历,南航计算机科学与技术学院导师介绍:戴群
  13. 联想服务器修改mac,修改Thinkpad E420的无线网卡MAC地址?
  14. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明)(热身赛) C-Statues 题解【dp】【动态规划】
  15. 友善串口助手 V2.5.8.0825 Serial Port Utility注册码
  16. BUUCTF:[INSHack2018]Self Congratulation
  17. c语言日历设计程序框图,C语言课程设计————写下流程图! 谢谢
  18. mac 关闭系统完整性保护 SIP(System Integrity Protection)的方法
  19. 遇到问题---pod使用pvc存储时报错---had volume affinity conflict
  20. 开发者证书、授权文件的管理

热门文章

  1. C语言实现设计模式—策略模式
  2. 微分进化算法解决函数优化问题的matlab代码,Matlab微分进化算法及优化函数测试...
  3. jq项目webpack打包步骤
  4. 技术收藏之linux shell 将字符串分割成数组
  5. 让弹簧动起来!SOLIDWORKS柔性零部件应用!
  6. 从零开始Web自动化(四):如何过打字网站的作弊检测,从而实现排行榜第一
  7. 有点做作--撩开“中国雅皮士”的神秘面纱(二)
  8. GIAC2018|全球互联架构大会新增区块链等热点议题!
  9. RuntimeException关键字
  10. mybatis 连接池POOLED分析