阿里规范:为何boolean类型变量命名禁用is开头

 更新时间:2020年8月31日 09:53  点击:3058

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

private String Success;
 
public String getSuccess() {
 return Success;
}
 
public void setSuccess(String success) {
 Success = success;
}

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

private boolean Success;
 
public boolean isSuccess() {
 return Success;
}
 
public void setSuccess(boolean success) {
 Success = success;
}

以上的方式都是正常的。

但是,如果我们将属性值定义为isSuccess,再来看看生成的getter和settter方法,如下:

private boolean isSuccess;
 
public boolean isSuccess() {
 return isSuccess;
}
 
public void setSuccess(boolean success) {
 isSuccess = success;
}

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

这个时候,我就好奇了,如果我强行写成getSuccess()的方式,会不会正常获取到Success属性值呢?,经过测试,发现是可以的。

那如果我两个方法都写了,结果是怎样的呢?

private boolean Success;
 
public boolean isSuccess() {
 return Success;
}
 
public boolean getSuccess() {
 return Success;
}
 
public void setSuccess(boolean success) {
 Success = success;
}

结果是:只会走getSuccess()方式获取属性值。

总结:

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

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

到此这篇关于阿里规范:为何boolean类型变量命名禁用is开头的文章就介绍到这了,更多相关boolean类型变量命名禁用is开头内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • 阿里规范:为何boolean类型变量命名禁用is开头

    这篇文章主要给大家介绍了关于阿里规范:为何boolean类型变量命名禁用is开头的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-31
  • element中TimePicker时间选择器禁用部分时间(显示禁用到分钟)

    这篇文章主要介绍了element中TimePicker时间选择器禁用部分时间(显示禁用到分钟),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-16
  • jQuery实现发送验证码控制按钮禁用功能

    最近接到新需求,需要实现一个点击发送验证码之后,按钮禁用,在5秒之后取消禁用,看似需求很简单,实现起来还真的好好动动脑筋,下面小编把jquery控制按钮禁用核心代码分享给大家,需要的朋友参考下吧...2021-07-24
  • MySQL禁用InnoDB引擎的方法

    一、确定版本查看MySQL版本复制代码 代码如下:mysql -V或者可以登录MySQL使用select version();或status;命令查看二、开始工作关闭MySQL复制代码 代码如下:service mysql stop如果上面的命令无法关闭MySQL,则使用kill...2014-05-31
  • C#禁用双击窗体图标关闭窗体的方法

    这篇文章主要介绍了C#禁用双击窗体图标关闭窗体的方法,通过对窗体参数的简单设置实现C#禁用双击窗体图标关闭窗体的功能,非常简单实用,需要的朋友可以参考下...2020-06-25
  • Android开发 简单实用的禁用横竖屏切换实现

    有时我们为了更好的体现视觉效果 ,我们的手机APP会禁用横竖屏切换,本文我们来讲解一下Android APP如何简单快速的实现禁用横竖屏切换效果。 一般情况下APP的界面都...2016-09-20
  • win2003 防止网卡本地连接被禁用的设置方法

    远程管理服务器有时候不小心会禁用网卡,那么就需要找机房的人来登录系统帮忙开启,无疑为我们增加了许多麻烦。...2016-01-27
  • 破除网页鼠标右键禁用的十大绝招

      现在很多的网页设置了禁用鼠标右键,使很多的人没有办法继续操作,现在教你几招,让你轻松破解。   1、在网页上任意处将右键按下,等跳出对话框时不要放开右键,将...2016-09-20
  • 当PHP被禁用的PHP函数:tempnam()后

    当PHP被禁用的PHP函数:tempnam() 后,tempnam()可建立一个临时档,档名不会与同目录中的档案重覆。   传回字串就是建立的临时档名。若发生错误则传回空字串。  ...2016-11-25
  • IIS6、IIS7.5中禁用WebDAV的方法

    这篇文章主要介绍了IIS6、IIS7.5中禁用WebDAV的方法,需要的朋友可以参考下...2017-07-06
  • PHP禁用EVAL的错误理解

    EVAl函数是一个非常强大的可以直接执行用户提交的php代码了,同时此函数也给黑客常利用到了,所以很多站长都想去禁止此函数,但小编搜索后发现很多朋友对于PHP禁用EVAL函数...2016-11-25
  • C# 禁用鼠标中间键的方法

    关于 C# System.Windows.Forms.NumericUpDown 控件,如何禁用鼠标中间键?...2020-06-25
  • php数据类型 - Boolean 布尔类型

    这是最简单的类型。 boolean 表达了真值,可以为 TRUE 或 FALSE ,布尔类型也是我们开发中常碰到的功能,下面我就来给各位同学整理一下它的用法。 语法: 要指定一个...2016-11-25
  • JavaScript类型系统之布尔Boolean类型详解

    这篇文章主要介绍了JavaScript类型系统之布尔Boolean类型详解的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-07-01
  • Springboot @Value注入boolean设置默认值方式

    这篇文章主要介绍了Springboot@Value注入boolean设置默认值方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2022-03-18
  • Web安全解析Boolean注入攻击原理

    这篇文章主要为大家介绍了Web安全解析Boolean注入攻击原理的讲解,有需要的朋友可以借鉴参考下希望能够有所帮助,祝大家多多进步早日升职加薪...2021-11-25
  • 使用controller传boolean形式值

    这篇文章主要介绍了使用controller传boolean形式值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2022-03-18