代码之家  ›  专栏  ›  技术社区  ›  flash

可能会引发NullPointerException,因为“value”在此处可为空,声纳警告

  •  0
  • flash  · 技术社区  · 7 年前

    我有这样的代码,当我在声纳下运行时,它总是在这条线上抱怨 value.contains("true")

    String value = getValue("/data/" + set, property);
    if (!Strings.isNullOrEmpty(value)) {
      if (value.contains("true")) {
        return true;
      } else {
        return false;
      }
    } else {
      return false;
    }
    

    这是它给我的信息: NullPointerException might be thrown as 'value' is nullable here

    我已经在检查上面的空检查值了,为什么它在里面抱怨呢?我做错什么了吗?

    更新:

    根据安迪的建议。我重写了这样的东西:

    String value = getValue("/data/" + set, property);
    if (value!=null) {
      return Boolean.parseBoolean(value);
    }
    return false;
    
    1 回复  |  直到 7 年前
        1
  •  5
  •   Andy Turner    7 年前

    Strings.isNullOrEmpty

    如果您将条件写为:

    if (value != null) {
    

    你打电话来也没关系 contains 在空字符串上。

    此外,这:

      if (value.contains("true")) {
        return true;
      } else {
        return false;
      }
    

    更容易写为

      return value.contains("true");
    

    总的来说,你可以这样写:

    return value != null && value.contains("true");
    

    编辑更新:如果您正在使用 Boolean.parseBoolean 你甚至不需要空支票。 parseBoolean 退货 false 对于空输入。

    String value = getValue("/data/" + set, property);
    return Boolean.parseBoolean(value);