有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

nullpointerexception在Java中如何将null转换为false?

在我的代码中有一个名为jorg.apache.tapestry5.json.JSONObject。 我想从该对象读取属性use-name

Boolean isUseName       = (Boolean) j.opt("use-name");

该值可以是true、false或null(如果JSONObject中不存在条目)。现在我想用isUseName作为条件语句:

if(!isUseName) {System.out.println("No Name to be used.")}

如果“use name”不在JSONObject中,这会给我一个NullPointerException。一种方法是首先简单地检查isUseName是否为空,例如

if(isUseName != null && !isUseName) {System.out.println("No Name to be used.")}

我在想,是否有更优雅的方式。例如,如果j.opt()返回null,是否可以(自动)将isUseName设置为false?我想到的一件事是使用三元表达式,但这有一个多余的j.opt("use-name")

Boolean isUseName = (j.opt("use-name") != null)
                  ? (Boolean) j.opt("use-name")
                  : false;

共 (3) 个答案

  1. # 1 楼答案

    您可以与Boolean.TRUE进行比较:

    boolean useName = Boolean.TRUE.equals (j.opt ("use-name"));
    
  2. # 2 楼答案

    检查一下钥匙是否存在怎么样

    boolean useName = j.has("use-name") ? j.getBoolean("use-name") : false;
    
  3. # 3 楼答案

    逻辑表达式短路,因此如果先检查null,则可以在检查后使用它:

    if(isUseName != null && !isUseName) {
        // It's not null, and false
        System.out.println("No Name to be used.");
    }
    

    或者

    if(isUseName == null || !isUseName) {
        // It's null or false
        System.out.println("No Name to be used.");
    }
    

    同样地

    if(isUseName != null && isUseName) {
        // It's not null, and true
    }
    

    if(isUseName == null || isUseName) {
        // It's either null or true
    }