我在想,如果有一个简单的方法(一个在线,而无需创建一个功能)转换String
到Boolean
Java中,但在某种程度上说Boolean
是null
如果String
是null
.
如果我看到它正确,如果输入字符串是,则Boolean
类中的所有方法都将返回.这是为什么?false
null
为什么在存在而不是返回的情况下Boolean.valueOf(String s)
返回更好? false
s
null
null
为什么在存在而不是返回的情况下
Boolean.valueOf(String s)
返回更好?false
s
null
null
因为Java中的内置功能,称为autoboxing.
让我们假设Boolean.valueOf(String s)
在实际的返回null
,当s
为null
.然后,以下语句将抛出NullPointerException
,因为null
无法分配给基元:
boolean b = Boolean.valueOf(null);
Run Code Online (Sandbox Code Playgroud)
为什么在存在而不是返回的情况下
Boolean.valueOf(String s)
返回更好?false
s
null
null
这是一个意见问题,并且(坦率地说)要求毫无意义......除非您碰巧设计自己的语言和运行时库.设计决策是在20多年前做出的,当语言被称为"Java"时,它将被改变的可能性为零.
javadocs Boolean.valueOf(String)
并没有提供任何关于设计师为何如此设计它的线索.
然而,很明显的行为Boolean.valueOf(String)
是不一致的以行为valueOf(String)
为其他原始包装类.例如,如果字符串参数是,则Integer.valueOf(String)
抛出.因此,真正的解释可能是语义只是一个不幸的异常现象,这是在发布Java 1.0时出现疏忽的结果.NumberFormatException
null
Boolean.valueOf(String)
然而,这是猜测.要获得真正的答案,您需要查阅相关的内部Sun/Oracle文档源(如果它们仍然存在)和/或与原始Java团队中的某个人交谈.
归档时间: |
|
查看次数: |
2028 次 |
最近记录: |