相关疑难解决方法(0)

为什么String.valueOf(null)抛出NullPointerException?

根据文档,该方法String.valueOf(Object obj)返回:

如果参数是null,那么一个字符串等于"null"; 否则,obj.toString()返回值.

但是当我尝试这样做时怎么样:

System.out.println("String.valueOf(null) = " + String.valueOf(null));
Run Code Online (Sandbox Code Playgroud)

它会引发NPE而不是?(如果你不相信,请亲自尝试!)

    Exception in thread "main" java.lang.NullPointerException
    at java.lang.String.(Unknown Source)
    at java.lang.String.valueOf(Unknown Source)

怎么会发生这种情况?文档对我说谎吗?这是Java中的一个主要错误吗?

java null api-design overloading nullpointerexception

122
推荐指数
3
解决办法
7万
查看次数

Java中null到string的转换

今天我在遗留代码中发现了一个错误,这让我有了一个令人震惊的发现:

String s = null + ""; //results in "null" string
s = String.valueOf(null); // NullPointerException is thrown
Integer i = null;
s = String.valueOf(i); //results in "null" string
Run Code Online (Sandbox Code Playgroud)

第一个问题是:为什么会发生这种意想不到的行为?
这意味着像这样的方便代码:

String age = person.getAge() + "";
Run Code Online (Sandbox Code Playgroud)

是完全出乎意料的。
第二个问题:获得 null 而不是“null”的最佳(最优雅)方法是什么

java string null

5
推荐指数
1
解决办法
7079
查看次数