<分区>
考虑
public String toString()
{
return foo + bar;
}
其中 foo
和 bar
都是类的字段。
如果 foo
和 bar
中的一个或两个都是 null,JLS 是否保证为每个字段返回字符串 (null)
,还是保留抛出 NPE 的权利?
标签 java
<分区>
考虑
public String toString()
{
return foo + bar;
}
其中 foo
和 bar
都是类的字段。
如果 foo
和 bar
中的一个或两个都是 null,JLS 是否保证为每个字段返回字符串 (null)
,还是保留抛出 NPE 的权利?
最佳答案
http://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.1.11 :
If the reference is null, it is converted to the string "null" (four ASCII characters n, u, l, l).
是的,它不会抛出 NPE(只要 +
解析为字符串连接,而不是算术运算)
编辑:
实际上,仔细观察,该行为并未在技术上定义。
字符串转换仅适用于 +
的非字符串参数。如果两个参数都是字符串,则不会进行任何转换(因此 5.1.11 不适用)。
然后我们转到 http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.18.1 , 仅指定以下内容:
...The characters of the left-hand operand precede the characters of the right-hand operand in the newly created string.
请注意,没有对 null
的引用。
所以我不认为 (String)null + (String)null
的行为是技术上定义的...
关于java - Java中null的字符串化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35339307/
相关文章:
java - 从 Eclipse 快速调试 Flex/Java Web 应用程序?
java - Android 位图图像到 Unity C# 纹理
java - Haproxy + 网络 : Way to prevent exceptions on connection reset?
java - 如何将 NetBeans Java Web 应用程序项目的 jar 文件添加到 Ant,以便在 Jenkins 上构建它?
java - 在键/值对中仅使用一个键有效地查找值,时间复杂度明智 : Java
java - 是否可以使用移动设备和 QRCodes 通过两因素身份验证来实现 OAuth?
java - string类的哪些对象是final的,是否有任何对象是final的