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

相关文章

  • 一文带你深入了解Java中延时任务的实现

    一文带你深入了解Java中延时任务的实现

    延时任务相信大家都不陌生,在现实的业务中应用场景可以说是比比皆是。这篇文章主要为大家介绍几种实现延时任务的办法,感兴趣的可以了解一下
    2022-11-11
  • 浅析Spring配置中的classpath:与classpath*:的区别

    浅析Spring配置中的classpath:与classpath*:的区别

    这篇文章主要介绍了Spring配置中的"classpath:"与"classpath*:"的区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Java的关键字与标识符小结

    Java的关键字与标识符小结

    这篇文章主要介绍了Java的关键字与标识符,总结整理了Java各种常见的关键字与标识符功能、用法及操作注意事项,需要的朋友可以参考下
    2020-04-04
  • SpringSecurityOAuth2 如何自定义token信息

    SpringSecurityOAuth2 如何自定义token信息

    这篇文章主要介绍了SpringSecurityOAuth2 自定义token信息的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • java.sql.SQLException: connection holder is null错误解决办法

    java.sql.SQLException: connection holder is null错误解决办法

    这篇文章主要给大家介绍了关于java.sql.SQLException: connection holder is null错误的解决办法,这个错误通常是由于连接对象为空或未正确初始化导致的,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • JAVA后台实现文件批量下载方式

    JAVA后台实现文件批量下载方式

    这篇文章主要介绍了JAVA后台实现文件批量下载方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • springboot集成redis实现消息的订阅与发布

    springboot集成redis实现消息的订阅与发布

    本文主要介绍了springboot集成redis实现消息的订阅与发布,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • Java使用TarsosDSP库实现音频的处理和格式转换

    Java使用TarsosDSP库实现音频的处理和格式转换

    在音频处理领域,Java虽然有原生的音频处理类库,但其功能相对基础,而TarsosDSP是一个强大的开源音频处理库,提供了丰富的功能,本文将介绍如何在Java中结合使用TarsosDSP库,来实现音频的处理和格式转换,需要的朋友可以参考下
    2025-04-04
  • Java C++题解leetcode769最多能完成排序的块

    Java C++题解leetcode769最多能完成排序的块

    这篇文章主要为大家介绍了Java C++题解leetcode769最多能完成排序的块示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • 双Token无感刷新机制实现方式

    双Token无感刷新机制实现方式

    本文介绍了如何在Vue.js前端和Java后端实现双Token的无感刷新机制,后端通过Jwt过滤器解析Token,前端在请求时携带Token并保存,当Token过期时,前端会自动刷新并重新发送请求,实现无感刷新
    2025-03-03

最新评论