4
String.valueOf(null);
  1. なぜvalueOf(char[] c)呼び出され、なぜ呼び出されないのですvalueOf(Object o); か??
  2. String.valueOf(null);例外を生成し、例外を生成NullPointerExceptionString.valueOf((Object)null);ないのはなぜですか?
4

2 に答える 2

3

複数のオーバーロードされたメソッドが可能なターゲットになる場合は常に、可能な限り最も具体的なメソッドが使用されます。

char[]そのため、 thenvalueOf(char[])を渡せばvalueOf(Object)可能ですが、valueOf(char[])より具体的です。したがって、それが呼び出されます。

これnullは、すべての非プリミティブ型の正当な値であるため、ちょっと奇妙です。したがって、これらのメソッドのいずれかの引数になる可能性があります。And still valueOf(char[])は よりも具体的でvalueOf(Object)あるため、最初のものが呼び出されます。

于 2014-01-13T14:02:00.063 に答える
1

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);
}
于 2014-01-13T14:01:34.243 に答える