[英]Why/when does System.out.println(); give error: method print(boolean)...not applicable
[英]Why does `System.out.println(null);` give “The method println(char[]) is ambiguous for the type PrintStream error”?
我正在使用代码:
System.out.println(null);
它显示错误:
The method println(char[]) is ambiguous for the type PrintStream
为什么null
不表示Object
?
PrintStream
中有3个println
方法接受引用类型 - 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);
如果调用System.println(null)
则有多个候选方法(使用char []
, String
和Object
参数),编译器无法决定采用哪一个。
固定
将显式强制转换添加到null。
System.out.println((Object)null);
或者使用null对象模式 。
为什么
null
不代表Object?
还有一个特殊的null类型,表达式的类型为null,没有名称。
由于null类型没有名称,因此无法声明null类型的变量或转换为null类型。
空引用是null类型表达式的唯一可能值。 null引用始终可以强制转换为任何引用类型。
始终可以将null引用分配或强制转换为任何引用类型
在实践中,程序员可以忽略null类型,只是假装null只是一个特殊的文字,可以是任何引用类型
因此null
的类型不是 Object
,尽管它可以转换为(读取 - 分配给) Object
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.