java Parse布尔值,可以为null

Yuv*_*ein 1 java boolean

我注意到java.lang.Boolean类存在一个无法解析空值的问题.我知道它有parseBoolean静态方法但是因为它的签名状态它只接受String而不是Object.

换句话说,它具有以下特征:

public static boolean parseBoolean(String s)
Run Code Online (Sandbox Code Playgroud)

但不是:

Boolean.parseBoolean(Object)
Run Code Online (Sandbox Code Playgroud)

在不降低NullPointerException的情况下检查布尔值的最佳方法是什么?

Rad*_*nov 7

尝试这种方法:

Boolean.TRUE.equals(yourObj);
Run Code Online (Sandbox Code Playgroud)


Che*_*het 7

如果您希望解析返回truefalse作为null对象Boolean,请查看 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
Run Code Online (Sandbox Code Playgroud)


Yuv*_*ein -1

您可以将其与Boolean.TRUE或进行比较Boolean.FALSE。例子:

if (Boolean.TRUE == Box.modeled()) { //do somthing }

  • 这实际上很糟糕,因为从技术上讲,您可以创建新的布尔对象:Boolean b = new Boolean(true); b != 布尔值.TRUE (4认同)