JavaBean是一个标准,遵循标准的Bean是一个带有属性和getters/setters方法的Java类。

JavaBean的定义很简单,但是还有有一些地方需要注意,例如Bean中含有boolean类型的属性。我们知道对于一个属性来说,如果其命名为test,那么其getter和setter方法一般为getTest()和setTest。但是如果test为一个布尔类型,那么其getter和setter方法为isTest()和setTest()。这是一个区别

public class BeanTest {
private boolean test; public boolean isTest() {
return test;
} public void setTest(boolean test) {
this.test = test;
}
}

如果我们将这个属性名换为isTest,那么其生成的getter和setter方法,居然和属性为test时的一样

public class BeanTest1 {
private boolean isTest; public boolean isTest() {
return isTest;
} public void setTest(boolean test) {
isTest = test;
}
}

这个区别在一般的情况下是没有影响的,但是如果涉及到和json串之间的转换,就得注意了。例如,如果我将上面的两个Bean的对象Json化,其结果居然是一样的

public static void main(String[] args) {
System.out.println(JSON.toJSONString(new Bean1())); //{"test":false}
System.out.println(JSON.toJSONString(new Bean2())); //{"test":false}
}

如果,我想要生成{“isTest”:false}这样的Json串,那么我们的Bean该怎么定义呢?这时候我们不该依赖于IDEA自动帮我们生成,我们必须手动编写:

public class Bean3{
private boolean isTest; public boolean getIsTest(){
return isTest;
}
public void setIsTest(boolean isTest){
this.isTest = isTest;
}
}

虽然这样生成了我们想要的json串,但是这样没有遵循Java规范,感觉很别扭。。。。我们可以使用@JSONField来指定json化后对应的字段名

另外,如果属性是boolean的包装类型Boolean,那么JavaBean定义的getter和setter方法又为什么呢?

public class Bean4{
private Boolean test; public Boolean getTest() {
return test;
} public void setTest(Boolean test) {
this.test = test;
}
} public class Bean5{
private Boolean isTest; public Boolean getTest() {
return isTest;
} public void setTest(Boolean test) {
isTest = test;
}
}

我们发现Boolean类型和boolean类型属性的get和set方法也是有差别的。

总的来说,为了避免麻烦,不管是定义Boolean类型的属性,还是定义boolean类型的属性,其字段名不要使用isXXX这种方式,然后按照Bean规范生成get和set方法就好了

Java bean中布尔类型使用注意的更多相关文章

  1. 详解Java 8中Stream类型的“懒”加载

    在进入正题之前,我们需要先引入Java 8中Stream类型的两个很重要的操作: 中间和终结操作(Intermediate and Terminal Operation) Stream类型有两种类型的 ...

  2. 《挑战30天C++入门极限》新手入门:C++中布尔类型

        新手入门:C++中布尔类型 布尔类型对象可以被赋予文字值true或者false,所对应的关系就是真与假的概念. 我们通常使用的方法是利用他来判断条件的真与假,例如下面的代码: #include ...

  3. 前端传数据到后台,后台用实体类接收不到引发的思考----Java bean中字段命名潜规则

    1.按照Java语法规范,通常在实体类中的属性,首字母都是小写的.这是由于JavaBean的规范导致的.一般JavaBean属性都是首字母小写,以驼峰命名格式命名,相应的 getter/setter ...

  4. 【Java学习笔记之八】JavaBean中布尔类型使用注意事项

    JavaBean是一个标准,遵循标准的Bean是一个带有属性和getters/setters方法的Java类. JavaBean的定义很简单,但是还有有一些地方需要注意,例如Bean中含有boolea ...

  5. Python中布尔类型

    我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算:与运算:只有两个布尔值都为 True 时,计算结果才为 True.True and T ...

  6. Java泛型中的类型擦除机制简单理解

    Java的泛型是JDK1.5时引入的.下面只是简单的介绍,不做深入的分析. Java的泛型是伪泛型.为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉.正确理解泛型概念的首 ...

  7. POJO类中布尔类型为啥不让用isXxx命名

    源码面前,了无秘密 <阿里开发规范泰山版>(2020.04.22)-->编程规约-->(一) 命名风格-->第8条规定: [强制]POJO 类中的任何布尔类型的变量,都不 ...

  8. go中布尔类型bool的用法

    示例 // bool布尔类型的用法 package main import ( "fmt" "unsafe" ) func main() { // bool类型 ...

  9. Java中布尔类型操作符&=,|=与^=的使用

    今天在对同事的代码进行code review的时候,见到一个比较好玩的写法.“flag &= false:”,乍一看,还感觉他写错了,但是程序可以正常运行,赶紧去百度,看一下这个写法到底是怎么 ...

随机推荐

  1. 【转】【WCF】WCF中客户端生成代理的两种方式

    WCF程序中客户端要生成代理才能调用服务,在客户端生成代理有多种方式,如用ChannelFactory和添加服务引用等.下面就分别来介绍下这两种生成代理的方式. 使用ChannelFactory 使用 ...

  2. Java如何从数组中查找对象元素?

    在Java中,如何从数组中查找对象元素? 示例 以下示例使用Contains方法来搜索数组中的String对象. package com.yiibai; import java.util.*; pub ...

  3. MyBatis环境配置及入门

    Mybatis 开发环境搭建,选择: MyEclipse8.5 版本,mysql 5.5, jdk 1.8, mybatis3.2.3.jar 包.这些软件工具均可以到各自的官方网站上下载. 整个过程 ...

  4. nginx+Uwsgi+Django总结与分析

    配置与调试nginx与uwsgi 參考: 1.uWSGI其三:uWSGI搭配Nginx使用 2.学习VirtualEnv和Nginx+uwsgi用于django项目部署 3.部署备忘 4.nginx+ ...

  5. TCP三次握手建立关系

    三次握手(three times handshake:three-way handshake)所谓的“三次握手”即对每次发送的数据量是怎样跟踪进行协商使数据段的 发送和接收同步,根据所接收到的数据量而 ...

  6. 第一篇 一步一步看透C++

        毕业快一年半了,这些时候,都是在底层方面做的一些工作,虽然内核的C也实现了C++中的一些抽象机制,面向对象,继承,多态,封装等等,但是,想着大学里面,电子类的学习,都是偏向底层的,有过C++的 ...

  7. AngularJS orderBy 使用要点

    AngularJS orderBy 使用要点总结: 1,书写格式 基本应用格式为: ng-repeat="item in itemList | orderBy:p1:p2" 参数p ...

  8. level1 - unit 1 - 句子结构

    preface 学习英语做为一种爱好,就是希望有一天能够和老外流畅沟通,目前来看,日常沟通还是没有问题的和我的外教. 知识日积月累,现在就把以前学习的(从初中到现在)知识总结下.每天一更,更到单元总结 ...

  9. debian、ubuntu:使用apt包管理器可能存在的问题! 让新手望而却步!

    apt包管理器说好真好,说不好真不好. 最近在debian9.ubuntu18.04上安装oracle 10g 玩. 怎么都准备不好安装环境.原因就是i386构架体系的deb包总安装不正确! baid ...

  10. 使用apache的poi实现导入导出excel

    1.jar包:poi-3.14-20160307.jar.poi-ooxml-3.14-20160307.jar 2.导入(本例实现了解析excel生成List): @Override public ...