zoukankan      html  css  js  c++  java
  • switch的对象不能为null

    我写的NPE

    虽然不多, 但几乎每次系统出问题的时候,看到api返回值是空的,绝大多数是NPE造成的。
    这时候会感慨一下谁写的bug,然后去补判空代码。

    最近抽风,开始给自己写的代码添加UnitTest, 有时间就保证覆盖率90%吧,于是就发现了
    隐藏NPE, 这在正常访问不会触发的NPE。

    暂时收集遇到的NPE如下。

    枚举类switch NPE

    有这样的一个Enum

    public enum WhereTypeEnum {
        eq,
        ne,
        like,
        gt,
        lt;
        public static String allValueString() {
            return Arrays.stream(WhereTypeEnum.values()).map(Enum::name)
                .collect(Collectors.joining(","));
        }
    }
    

    然后作为一个成员变量来使用

    @Data
    @Accessors(chain = true)
    public class WhereRq {
    
        @ApiModelProperty("字段名")
        private String column;
        @ApiModelProperty("字段值,date格式化为YYYY-MM-dd hh:mm:ss")
        private Object value;
        @ApiModelProperty("条件类型")
        private WhereTypeEnum type;
    }
    

    这是一个requestBody的一部分。用的时候没判断,就出问题了:

    WhereTypeEnum type = whereRq.getType();
    switch (type) {
        case eq: {
            where.append("=");
            break;
        }
        case gt: {
            where.append(">");
            break;
        }
    

    java.lang.NullPointerException at switch

    switch里的变量不能是NULL

  • 相关阅读:
    react-redux-reducer
    react-redux-action
    node-express-2-jade
    node-express-1
    vuex-Module
    vuex-Action(异步)
    vuex-Mutation(同步)
    vuex-getter
    vuex-state
    ##DAY7 UINavigationController
  • 原文地址:https://www.cnblogs.com/woshimrf/p/java-switch-value-cannot-be-null.html
Copyright © 2011-2022 走看看