欢迎关注方志朋的博客,回复”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 开头?相关推荐

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

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

  2. JAVA的知识点4——字符型变量/常量 boolean类型变量/常量

    字符型变量/常量 字符型在内存中占2个字节,在Java中使用单引号来表示字符常量.例如'A'是一个字符,它与"A"是不同的,"A"表示含有一个字符的字符串. 例 ...

  3. 为什么阿里巴巴不建议boolean类型变量用isXXX?

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

  4. 为什么阿里巴巴禁止开发人员 boolean 类型变量使用 isXXX 来命名?

    >>号外:关注"Java精选"公众号,菜单栏->聚合->干货分享,回复关键词领取视频资料.开源项目. 背景 平时工作中大家经常使用到boolean以及Boo ...

  5. FreeMarker 输出Boolean类型变量默认值

    直接使用表达式   ${searchAll}   会遇到空异常 . . 使用转换表达式    ?string('true','false')      这样,默认的情况, 就是 false 表达式含义 ...

  6. 记-阿里开发手册规范(JAVA)

    从接触java以来,我们一直学习着各种技术和架构.但我们常忽略代码可读性和一些特殊的规范和约定.有很多人尤其是新人写的代码,运行可能没什么问题.但却不忍直视,甚至内涵风险.业内代码规范可能各有各的理解 ...

  7. 京东向下沉市场打出“京喜”,拼多多和阿里惊不惊喜?

    图片来源于网络 文|陈小江 来源 | 螳螂财经(ID:TanglangFin) 天猫和京东双11数钱大战又开始了. 2019年天猫双11全球狂欢节大家玩得很嗨,只用96秒就帮天猫成交额突破100亿,比 ...

  8. 阿里《Java开发手册》中的 1 个bug!

    本来打算写一篇<阿里巴巴为什么不允许日志输出时,使用字符串拼接?>的文章,主要是想从性能方面来说此问题,可在文章写到一半进行性能测试时,却发现了一个异常问题,实际测试的结果和手册上描述的结 ...

  9. delete postman 传参_PostMan 传参boolean 类型,接口接受的值一直是false

    情形: 最近写前台页面的一个按钮,功能是:点击后切换状态,显示是或否. 字段名称是isTest,类型是boolean . 写完接口,拿postMan测试,传参如下: 但是后台接口接受的数据 一直是fa ...

最新文章

  1. Spring的OncePerRequestFilter的作用
  2. 全国计算机等级考试题库二级C操作题100套(第04套)
  3. mysql合并多条纪录字段_Mysql应用mysql合并多条记录的单个字段去一条记录编辑
  4. 互联网域名产业报告(2021年)
  5. Golang中闭包的理解
  6. BZOJ 2821: 作诗(Poetize) [分块]
  7. 解决办法:VirtualBox只能安装32位的问题
  8. android之Fragment(官网资料翻译),高级Android开发必看
  9. PPT怎么修改母版背景
  10. 互联网公司的裁员,能玩出多少种花样?
  11. origin基本操作
  12. 程序员如何创建自己的网站
  13. 游戏App上架iOS被拒各种奇葩问题
  14. 抖音电商的带货情况究竟如何,抖音电商带货前景如何
  15. 芯片前端设计面经笔经总结
  16. 《C#零基础入门之百识百例》(三十五)方法返回 -- 自守数
  17. 一周新论文 | 2020年第13周 | 自然语言处理相关
  18. html css制作简单优惠卷
  19. dell服务器r730老自动重启_Re: DELL R730 服务器异常卡死导致iDRAC控制台无信号以及服务器远程连接失败重启后报内存错误(已插拔并已改变卡槽位置)...
  20. strcpy()、strncpy()和strcpy_s()函数的区别

热门文章

  1. Jupyter Notebook学习笔记
  2. Synchronized的两个用法
  3. 【转】学习汇编前你应该知道的知识
  4. Qt 在Label上面绘制罗盘
  5. 数据库之子查询四(多重,表复制)
  6. 转载:用 Tomcat 和 Eclipse 开发 Web 应用程序
  7. 用Graphviz来画图 1
  8. 【青少年编程】【蓝桥杯】绘制莲花图形
  9. 【青少年编程】【三级】打气球游戏
  10. Xshell发送命令到全部会话