为什么`System.out.println(null);`给出“对于类型PrintStream错误,方法println(char [])不明确”?


问题内容

我正在使用代码:

System.out.println(null);

它显示错误:

The method println(char[]) is ambiguous for the type PrintStream

为什么没有null代表Object


问题答案:

有3种println的方法PrintStream接受一个引用类型- ,println(char x[]),。println(String x)``println(Object x)

通过时null,所有3个都适用。方法重载规则更喜欢具有最特定参数类型的方法,因此println(Object x)不选择。

然后,编译器不能在前两个- println(char x[])println(String x)- 之间进行选择,因为String它不比-
更具体char[],反之亦然。

如果要选择特定的方法,请将null强制转换为所需的类型。

例如 :

System.out.println((String)null);