根据文档,该方法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中的一个主要错误吗?
我发现一些代码我工作的地方的点null被强制转换Object,因为它是传递给方法.
为什么要这样做?
我知道这个问题涉及重载方法,并使用强制转换来确定要调用的方法版本.
但是如果没有执行强制转换,Object如果使用null参数调用该方法,那么如果选择的参数类型的重载方法不会超过该方法的任何其他匹配版本吗?那么演员还能做些什么呢?