String.valueOf(null);
valueOf(char[] c)
被调用,为什么不被valueOf(Object o);
?? String.valueOf(null);
会产生NullPointerException
和。{
String.valueOf((Object)null);
不会产生任何异常吗?答案 0 :(得分:3)
每当多个重载方法成为可能的目标时,将使用最具特异性的方法。
因此,如果您传入char[]
,则可以valueOf(char[])
和valueOf(Object)
,但valueOf(char[])
更具体。因此,那个人将被召唤。
现在null
有点奇怪,因为它是每个非基本类型的合法值,因此它可以是任何这些方法的参数。 仍然 valueOf(char[])
比valueOf(Object)
更具体,因此第一个将被调用。
答案 1 :(得分:1)
String.valueOf((Object) null)
调用以下方法:
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
如您所见,管理 null case 。
String.valueOf(null)
调用以下方法:
public static String valueOf(char data[]) {
return new String(data);
}
它自己称之为:
public String(char value[]) {
this.offset = 0;
this.count = value.length; // <-- NPE
this.value = StringValue.from(value);
}