String.valueOf(null);
- なぜ
valueOf(char[] c)
呼び出され、なぜ呼び出されないのですvalueOf(Object o);
か?? String.valueOf(null);
例外を生成し、例外を生成NullPointerException
しString.valueOf((Object)null);
ないのはなぜですか?
複数のオーバーロードされたメソッドが可能なターゲットになる場合は常に、可能な限り最も具体的なメソッドが使用されます。
char[]
そのため、 thenvalueOf(char[])
を渡せばvalueOf(Object)
可能ですが、valueOf(char[])
より具体的です。したがって、それが呼び出されます。
これnull
は、すべての非プリミティブ型の正当な値であるため、ちょっと奇妙です。したがって、これらのメソッドのいずれかの引数になる可能性があります。And still valueOf(char[])
は よりも具体的でvalueOf(Object)
あるため、最初のものが呼び出されます。
String.valueOf((Object) null)
次のメソッドを呼び出します。
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
ご覧のとおり、null ケースは管理されています。
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);
}