为什么阿里强制 boolean 类型变量不能使用 is 开头?
欢迎关注方志朋的博客,回复”666“获面试宝典
来源:blog.csdn.net/belongtocode/article/details/100635246
背景
平时工作中大家经常使用到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()
1.其实javaBeans规范中对这些均有相应的规定,基本数据类型的属性,其getter和setter方法是getXXX()
和setXXX
,但是对于基本数据中布尔类型的数据,又有一套规定,其getter和setter方法是isXXX()
和setXXX
。但是包装类型都是以get开头
2.这种方式在某些时候是可以正常运行的,但是在一些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中使用包装数据类型,局部变量使用基本数据类型。
热门内容:
华为最美小姐姐,被外派墨西哥后...
我变秃了,也变强了 ...
突发!LayUI宣布下线
再见了Spring Cloud!这个架构有点厉害,甚至干掉了Dubbo
我把SpringBoot的banner换成了美女,老板:工作不饱和,建议加班
别再乱打日志了,这样才是定位 bug 打日志的方式!
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
明天见(。・ω・。)ノ♡
为什么阿里强制 boolean 类型变量不能使用 is 开头?相关推荐
- java定义boolean命名_阿里规范:为何boolean类型变量命名禁用is开头
java中,对于非boolean类型的参数,getter和setpXMPater方法命名的规范是以get和set开头,如下: private String Success; public String ...
- JAVA的知识点4——字符型变量/常量 boolean类型变量/常量
字符型变量/常量 字符型在内存中占2个字节,在Java中使用单引号来表示字符常量.例如'A'是一个字符,它与"A"是不同的,"A"表示含有一个字符的字符串. 例 ...
- 为什么阿里巴巴不建议boolean类型变量用isXXX?
背景: 平时工作中大家经常使用到boolean以及Boolean类型的数据,前者是基本数据类型,后者是包装类,为什么不推荐使用isXXX来命名呢?到底是用基本类型的数据好呢还是用包装类好呢? 例子: ...
- 为什么阿里巴巴禁止开发人员 boolean 类型变量使用 isXXX 来命名?
>>号外:关注"Java精选"公众号,菜单栏->聚合->干货分享,回复关键词领取视频资料.开源项目. 背景 平时工作中大家经常使用到boolean以及Boo ...
- FreeMarker 输出Boolean类型变量默认值
直接使用表达式 ${searchAll} 会遇到空异常 . . 使用转换表达式 ?string('true','false') 这样,默认的情况, 就是 false 表达式含义 ...
- 记-阿里开发手册规范(JAVA)
从接触java以来,我们一直学习着各种技术和架构.但我们常忽略代码可读性和一些特殊的规范和约定.有很多人尤其是新人写的代码,运行可能没什么问题.但却不忍直视,甚至内涵风险.业内代码规范可能各有各的理解 ...
- 京东向下沉市场打出“京喜”,拼多多和阿里惊不惊喜?
图片来源于网络 文|陈小江 来源 | 螳螂财经(ID:TanglangFin) 天猫和京东双11数钱大战又开始了. 2019年天猫双11全球狂欢节大家玩得很嗨,只用96秒就帮天猫成交额突破100亿,比 ...
- 阿里《Java开发手册》中的 1 个bug!
本来打算写一篇<阿里巴巴为什么不允许日志输出时,使用字符串拼接?>的文章,主要是想从性能方面来说此问题,可在文章写到一半进行性能测试时,却发现了一个异常问题,实际测试的结果和手册上描述的结 ...
- delete postman 传参_PostMan 传参boolean 类型,接口接受的值一直是false
情形: 最近写前台页面的一个按钮,功能是:点击后切换状态,显示是或否. 字段名称是isTest,类型是boolean . 写完接口,拿postMan测试,传参如下: 但是后台接口接受的数据 一直是fa ...
最新文章
- Spring的OncePerRequestFilter的作用
- 全国计算机等级考试题库二级C操作题100套(第04套)
- mysql合并多条纪录字段_Mysql应用mysql合并多条记录的单个字段去一条记录编辑
- 互联网域名产业报告(2021年)
- Golang中闭包的理解
- BZOJ 2821: 作诗(Poetize) [分块]
- 解决办法:VirtualBox只能安装32位的问题
- android之Fragment(官网资料翻译),高级Android开发必看
- PPT怎么修改母版背景
- 互联网公司的裁员,能玩出多少种花样?
- origin基本操作
- 程序员如何创建自己的网站
- 游戏App上架iOS被拒各种奇葩问题
- 抖音电商的带货情况究竟如何,抖音电商带货前景如何
- 芯片前端设计面经笔经总结
- 《C#零基础入门之百识百例》(三十五)方法返回 -- 自守数
- 一周新论文 | 2020年第13周 | 自然语言处理相关
- html css制作简单优惠卷
- dell服务器r730老自动重启_Re: DELL R730 服务器异常卡死导致iDRAC控制台无信号以及服务器远程连接失败重启后报内存错误(已插拔并已改变卡槽位置)...
- strcpy()、strncpy()和strcpy_s()函数的区别