点击关注公众号,回复“2T”获取2TB学习资源!

互联网架构师后台回复 2T 有特别礼包

上一篇:深夜看了张一鸣的微博,让我越想越后怕

来源: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中使用包装数据类型,局部变量使用基本数据类型。

感谢您的阅读,也欢迎您发表关于这篇文章的任何建议,关注我,技术不迷茫!小编到你上高速。

· END ·

最后,关注公众号互联网架构师,在后台回复:2T,可以获取我整理的 Java 系列面试题和答案,非常齐全。

正文结束

推荐阅读 ↓↓↓

1.不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事

2.如何才能成为优秀的架构师?

3.从零开始搭建创业公司后台技术栈

4.程序员一般可以从什么平台接私活?

5.37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...

6.IntelliJ IDEA 2019.3 首个最新访问版本发布,新特性抢先看

7.这封“领导痛批95后下属”的邮件,句句扎心!

8.15张图看懂瞎忙和高效的区别!

一个人学习、工作很迷茫?

点击「阅读原文」加入我们的小圈子!

为什么阿里强制 boolean 类型变量不能使用 is 开头相关推荐

  1. 为什么阿里强制 boolean 类型变量不能使用 is 开头?

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/belongtocode/article/details/100635246 背景 平时工作中大家 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. LeetCode Valid Number(判断字符串是否是合法的数字表示 )
  2. IT项目经理学习-德鲁克时间管理
  3. 南卫理公会大学计算机科学,南卫理公会大学哪个专业好?
  4. 用word发布CSDN文章
  5. utf8 and unicode
  6. Java DataOutputStream writeChars()方法及示例
  7. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查...
  8. 空指针、NULL指针、零指针
  9. linux下文件打包、压缩详解
  10. 学习一下物联网协议 wifi zigbee 蓝牙等等----从wifi就开始 wifi和wifi协议 关于wifi协议本身我们需要了解那些东西?
  11. ROS--基于机器人操作系统设计与实现
  12. 彻底卸载vscode Linux,Ubuntu vscode 安装与卸载
  13. 【C语言】初识C语言(上篇)
  14. 技术分享 | MySQL 突如其来的主从复制延迟
  15. Linux终端不能显示表情符问题
  16. GBASE 8C——SQL参考 5 全文检索
  17. C语言实现strcpy和strcmp
  18. 总结机器学习优化器Optimizer
  19. 用MATLAB做简单的运动模糊
  20. 用python对excel进行单元格操作

热门文章

  1. Android 不自动弹出软键盘
  2. $(document).ready()方法和window.onload()方法
  3. 【smart-transform】取自Atom的babeljs/cs/ts智能转es5 库
  4. Instagram新推两款AI过滤工具,没错!背后功臣就是Deep Text
  5. 离散数学蕴含等值式前件为假时命题为真的理解
  6. Asp.Net中OnClientClick与OnClick之我见
  7. 关于win32程序如何共享数据
  8. .NET多线程编程(2)——Thread类
  9. 楼主,不知道为什么这么流行
  10. Mac新手使用技巧——AirDrop