zoukankan      html  css  js  c++  java
  • 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最好。

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

  • 相关阅读:
    目标检测算法的进展
    基础 | batchnorm原理及代码详解
    MTCNN人脸及特征点检测---代码应用详解(基于ncnn架构)
    Android.mk文件c++头文件包含问题
    linux下的find文件查找命令与grep文件内容查找命令
    TensorFlow基础笔记(15) 编译TensorFlow.so,提供给C++平台调用
    TensorFlow基础笔记(0) tensorflow的基本数据类型操作
    tensorflow函数解析:Session.run和Tensor.eval的区别
    TensorFlow基础笔记(14) 网络模型的保存与恢复_mnist数据实例
    SQL Server 2005/2008遍历所有表更新统计信息
  • 原文地址:https://www.cnblogs.com/move22/p/10141325.html
Copyright © 2011-2022 走看看