どちらとも決まらない null
このコードを実行するとどうなるか。
public class Main {
static void p(String s) { System.out.println("String"); }
static void p(StringBuilder sb) { System.out.println("StringBuilder"); }
public static void main(String[] args) {
p(null);
}
}
- A
Stringと出力される - B
StringBuilderと出力される - C 実行時に例外が発生する
- D コンパイルエラーになる
正解と解説を見る
正解: D
- A: 実行まで進まないので、何も出力されません。
- B: 実行まで進まないので、何も出力されません。
- C: あいまいな呼び出しはコンパイル時に見つかります。
- D: String と StringBuilder には親子関係が無く、どちらが具体的か決まらないのでコンパイルエラーです。
ポイント
- String と StringBuilder には親子関係が無いので、どちらがより具体的か決まりません。呼び出しがあいまいでコンパイルエラーです。