如何在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.")}

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

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

你可以用Boolean.TRUE进行比较:

boolean useName = Boolean.TRUE.equals (j.opt ("use-name"));

逻辑表达式短路,所以如果您先检查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
}

如何检查密钥是否存在

boolean useName = j.has("use-name") ? j.getBoolean("use-name") : false;
链接地址: http://www.djcxy.com/p/76155.html

上一篇: How to turn null into false in Java?

下一篇: Getting NullPointerException calling methods on null values unmarshalled by JAXB