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

 更新时间:2020年08月30日 16:20:53   作者:hungteshun  
这篇文章主要给大家介绍了关于阿里规范:为何boolean类型变量命名禁用is开头的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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开头内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • struts2单个文件上传的两种实现方式

    struts2单个文件上传的两种实现方式

    这篇文章主要介绍了struts2单个文件上传的两种实现方式,有需要的朋友可以参考一下
    2014-01-01
  • 详解servlet配置load-on-startup的作用

    详解servlet配置load-on-startup的作用

    本文对load-on-startup的相关内容作了详细介绍,然后通过具体实例向大家展示了其作用,希望可以给大家一个参考。
    2017-09-09
  • SpringMVC form标签引入及使用方法

    SpringMVC form标签引入及使用方法

    这篇文章主要介绍了SpringMVC form标签引入及使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • feign调用返回object类型转换方式

    feign调用返回object类型转换方式

    这篇文章主要介绍了feign调用返回object类型转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • JAVA中读取文件(二进制,字符)内容的几种方法总结

    JAVA中读取文件(二进制,字符)内容的几种方法总结

    本篇文章主要介绍了JAVA中读取文件(二进制,字符)内容的方法总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • java 详解类加载器的双亲委派及打破双亲委派

    java 详解类加载器的双亲委派及打破双亲委派

    这篇文章主要介绍了java 详解类加载器的双亲委派及打破双亲委派的相关资料,需要的朋友可以参考下
    2017-01-01
  • java实现发牌小程序

    java实现发牌小程序

    这篇文章主要为大家详细介绍了java实现发牌小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • JAVA 实现延迟队列的方法

    JAVA 实现延迟队列的方法

    这篇文章主要介绍了JAVA 实现延迟队列的方法,文中讲解非常详细,供大家参考和学习,感兴趣的朋友可以了解下
    2020-06-06
  • Eclipse maven项目lombok安装配置图解

    Eclipse maven项目lombok安装配置图解

    这篇文章主要介绍了Eclipse maven项目lombok安装配置图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 实例讲解Java批量插入、更新数据

    实例讲解Java批量插入、更新数据

    这片文章介绍了一个Java批量添加数据,多个字段同时添加多条数据具体实例,面向的是Oracle数据库,需要的朋友可以参考下
    2015-07-07

最新评论