一、boolean和Boolean的区别和使用场景

  1. boolean是基本数据类型,Boolean是它的封装类,和其他类一样,有属性有方法。他们的关系其实是:Boolean 是boolean 的实例化对象类,和Integer对应int一样。
  2. 知道了他们的区别,那我们就可以知道该使用boolean还是Boolean了,第一个就是我们在使用容器内需要装布尔值的时候,这时候我们别无选择,只能使用Boolean类。其次,当我们需要用到toString()valueOf()方法与String相互转换的场景应该使用Boolean类。比如,
Boolean.valueOf(target);

        来转换成Boolean对象。

        3.除此之外,在使用JPA(Java Persistence API的过程中还是觉得使用boolean更有优势,因为我们只需要进行true/false的标记,就直接用boolean即可。

二、用boolean时接收不到前端参数

在使用前后端分离开发中,往往用Json传参是最高效的方式之一,但是我们可能遇到接收不到boolean类型(默认值是false)的参数。

这种情况其实是因为我们定义boolean参数的时候加了“is”,比如

private boolean isDeleted;

它的方法也是isDeleted(),RPC框架在反向解析的时候,会误判deleted才是属性名称,导致属性获取不到,进而产生抛出异常或者传参失败等情况。

三、解决办法

  1. @JsonProperty是作用在实体类的属性上的,把属性的名称序列化另一个名称,属性名称和@JsonProperty("")里面的名称是映射关系。比如数据库字段是"is_deleted",实体类属性名称是"isDeleted",这种情况,只需加上@JsonProperty("isDeleted")就能获取到Json的传参了
  2. 综上,解决办法是:
@JsonProperty("isDeleted")
private boolean isDeleted;

    @JsonProperty(value = "is_deleted")
    public boolean isDeleted() {
        return deleted;
    }
    @JsonProperty(value = "is_deleted")
    public void setDeleted(boolean deleted) {
        this.deleted = deleted;
    }

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐