Kan*_*rai 20 java null system println system.out
我正在使用代码:
System.out.println(null);
Run Code Online (Sandbox Code Playgroud)
它显示错误:
The method println(char[]) is ambiguous for the type PrintStream
Run Code Online (Sandbox Code Playgroud)
为什么没有null代表Object?
Era*_*ran 25
有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);
Run Code Online (Sandbox Code Playgroud)
如果你打电话System.println(null)有多个候选方法(用char [],String和Object参数),编译器不能决定采取哪一个.
修复
将显式强制转换添加到null.
System.out.println((Object)null);
Run Code Online (Sandbox Code Playgroud)
或者使用null对象模式.
为什么
null不代表对象?
还有一个特殊的null类型,表达式的类型为null,没有名称.
由于null类型没有名称,因此无法声明null类型的变量或转换为null类型.
空引用是null类型表达式的唯一可能值.null引用始终可以强制转换为任何引用类型.
null引用总是可以分配或转换为任何引用类型
实际上,程序员可以忽略null类型,只是假装null只是一个特殊的文字,可以是任何引用类型
这样的类型null是不 Object,虽然它可被转化为(读-为分配给)一个Object.
| 归档时间: |
|
| 查看次数: |
6014 次 |
| 最近记录: |