Boolean.valueOf(String)可以返回null吗?

时间:2014-04-30 16:22:27

标签: java boolean

Boolean.valueOf(String)可以返回null吗?从我在java docs中看到的内容,docs只指定何时返回true。是否总是返回false,否则可以返回null?在我所做的测试中,我无法让它返回null,但我想确定。

基本上,我想知道以下代码是否对NullPointerException是安全的:

boolean b = Boolean.valueOf(...); 

4 个答案:

答案 0 :(得分:15)

文档几乎回答了它:没有。它将返回表示真或假的Boolean

code is also available

public static Boolean valueOf(String s) {
    return toBoolean(s) ? TRUE : FALSE;
}

答案 1 :(得分:3)

不,这是不可能的。请参阅类Boolean的源代码:

public static Boolean valueOf(String s) {
    return toBoolean(s) ? TRUE : FALSE;
}

..然后:

private static boolean toBoolean(String name) {
   return ((name != null) && name.equalsIgnoreCase("true"));
}

答案 2 :(得分:1)

不,不会。如果null放在参数中,或者如果字符串设置为null,则返回布尔值false。您可以在Java文档中查看预期的输入和输出:http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html#booleanValue()

答案 3 :(得分:1)

实际上它可能导致NPE但不能返回null。试试这个:

Boolean bNull = null;
System.print(Boolean.valueOf(bNull)); // -> NPE!

这种情况发生,因为Boolean.valueOf()接受Stringboolean值。由于bNull的类型为Boolean,因此java会尝试取消设置bNull值,将其作为boolean传递,从而导致NPE。实际上它有趣但很愚蠢... Boolean.valueOf()也没有Number