Boolean.valueOf(String)
可以返回null吗?从我在java docs中看到的内容,docs只指定何时返回true。是否总是返回false,否则可以返回null?在我所做的测试中,我无法让它返回null,但我想确定。
基本上,我想知道以下代码是否对NullPointerException是安全的:
boolean b = Boolean.valueOf(...);
答案 0 :(得分:15)
文档几乎回答了它:没有。它将返回表示真或假的Boolean
。
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()
接受String
或boolean
值。由于bNull
的类型为Boolean
,因此java会尝试取消设置bNull
值,将其作为boolean
传递,从而导致NPE。实际上它有趣但很愚蠢... Boolean.valueOf()
也没有Number
。