将可能为null的Java布尔值解析为布尔值。

6
我发现了一个问题,java.lang.Boolean类不能解析空值。我知道它有一个parseBoolean静态方法,但正如其签名所述,它只接受String而不是Object
换句话说,它的签名如下:
public static boolean parseBoolean(String s)

但不包括:

Boolean.parseBoolean(Object)

如何在不出现NullPointerException的情况下检查布尔值?


2
你想做什么?将一个 Boolean(即 true、false 或 null)转换为 boolean 吗?如果是这样,你需要决定 null 值是 true 还是 false。 - user253751
看看这个链接是否有帮助:https://dev59.com/A2gu5IYBdhLWcg3wpYcj - Sabir Khan
你认为 parseBoolean(null) 只适用于 parseBoolean(Object) 吗?如果不是,你希望如何将你的对象解析为 Boolean - steffen
你是怎么在空指针异常上失败的? - Leet-Falcon
我从一个对象实体接收到一个必须是布尔类型的字段(因为它是实体),而且空值当然是false。所以我认为最好的答案就是将其与Boolean.TRUE进行比较。 - Yuval Zilberstein
3个回答

13

尝试一下这种方法:

Boolean.TRUE.equals(yourObj);

1
OP可能需要null。问题要求转换为Boolean而不是boolean,但对于其他只需要原始类型的人仍然有用。 - StevenWernerCS

7
如果你想让你的解析器返回一个Boolean对象的truefalsenull,可以考虑使用Apache Commons Lang。其中,BooleanUtils提供了一种简单的方法来实现这一点。你可以查看以下链接:https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/BooleanUtils.html#toBooleanObject(java.lang.String)
BooleanUtils.toBooleanObject(null) == null
BooleanUtils.toBooleanObject("true") == true
BooleanUtils.toBooleanObject("false") == false
BooleanUtils.toBooleanObject("YES") == true
BooleanUtils.toBooleanObject("nO") == false

-1
你可以将其与 Boolean.TRUEBoolean.FALSE 进行比较。例如:

if (Boolean.TRUE == Box.modeled()) { //做一些事情 }


4
这其实是不好的,因为从技术角度讲你可以创建新的布尔对象:Boolean b = new Boolean(true); b != Boolean.TRUE - AdamSkywalker
那么...你在提问的同时就回答了自己的问题吗? - Stultuske
1
这也并没有回答你的问题。 - AdamSkywalker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接