• Java零散小总结


    1. 在类中定义布尔类型的变量

    一般情况下,我们可以有以下四种方式来定义一个布尔类型的成员变量:

    boolean success
    boolean isSuccess
    Boolean success
    Boolean isSuccess

    以上四种定义形式,你日常开发中最常用的是哪种呢?到底哪一种才是正确的使用姿势呢?

    看看阿里巴巴Java开发手册中这条规定的评价

    8. 【强制】POJO 类中布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误。反例:定义为基本数据类型 boolean isSuccess;的属性,它的方法也是 isSuccess(),RPC框架在反向解析的时候,“以为”对应的属性名称是 success,导致属性获取不到,进而抛出异常。

    所以,在定义POJO中的布尔类型的变量时,不要使用isSuccess这种形式,而要直接使用success!

    那么,到底应该是用Boolean还是boolean来给定一个布尔类型的变量呢?

    我们知道,boolean是基本数据类型,而Boolean是包装类型。

    当我们没有设置Model对象的字段的值的时候,Boolean类型的变量会设置默认值为null,而boolean类型的变量会设置默认值为false

    8. 关于基本数据类型与包装数据类型的使用标准如下:

      1) 【强制】所有的 POJO 类属性必须使用包装数据类型。

      2) 【强制】RPC 方法的返回值和参数必须使用包装数据类型。

      3) 【推荐】所有的局部变量使用基本数据类型。

    说明:POJO 类属性没有初值是提醒使用者在需要使用时,必须自己显式地进行赋值,任何 NPE 问题,或者入库检查,都由使用者来保证。

    正例:数据库的查询结果可能是 null,因为自动拆箱,用基本数据类型接收有 NPE 风险。

    反例:比如显示成交总额涨跌情况,即正负 x%,x 为基本数据类型,调用的 RPC 服务,调用 不成功时,返回的是默认值,页面显示为 0%,这是不合理的,应该显示成中划线。所以包装 数据类型的 null 值,能够表示额外的信息,如:远程调用失败,异常退出。

    以上,就是建议在POJO和RPC的返回值中使用包装类型的原因。

    当我们在设计一个接口的时候,对于接口的返回值的定义,尽量避免使用Boolean类型来定义。大多数情况下,别人使用我们的接口返回值时可能用if(response.isSuccess){}else{}的方式,如果我们由于忽略没有设置success字段的值,就可能导致NPE,这明显是我们不希望看到的。个人觉得统一成数字0和1最好。

    当然,编程中并没有绝对。两种方式是两种思维方式,多提供一种思路,在日常开发中自行选择。

  • 相关阅读:
    Luogu-P2295 MICE
    Luogu-P2627 修剪草坪
    Loj-10176-最大连续和
    Luogu-P1886 滑动窗口
    Luogu-P3807 【模板】卢卡斯定理
    Luogu-P1879 [USACO06NOV]玉米田Corn Fields
    Luogu-P1896 [SCOI2005]互不侵犯
    Loj-SGU 223-国王
    Luogu-P2657 [SCOI2009]windy数
    素数
  • 原文地址:https://www.cnblogs.com/move22/p/10141325.html
Copyright © 2020-2023  润新知