String.valueOf(null);
- 为什么
valueOf(char[] c)
叫,为什么不叫valueOf(Object o);
? - 为什么
String.valueOf(null);
产生 aNullPointerException
并且String.valueOf((Object)null);
不产生任何异常?
每当不止一种重载方法成为可能的目标时,将使用最具体的一种。
因此,如果您传入一个char[]
thenvalueOf(char[])
并且valueOf(Object)
将是可能的,但valueOf(char[])
更具体。因此,将调用那个。
Nownull
有点奇怪,因为它是每个非原始类型的合法值,所以它可以是任何这些方法的参数。而且仍然 valueOf(char[])
比 更具体valueOf(Object)
,因此将调用第一个。
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);
}