jub*_*0bs 2 java overloading compiler-errors ambiguous
如果我编译并运行以下类(使用Java SE 7,如果这很重要),
class Foo {
public static void main(String[] args) {
System.out.println(true ? null : 42);
// System.out.println(null);
}
}
Run Code Online (Sandbox Code Playgroud)
我得到以下输出
null
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但是,如果我取消注释第二个语句main,我会收到编译错误:
Foo.java:5: error: reference to println is ambiguous, both method println(char[]) in PrintStream and method println(String) in PrintStream match
System.out.println(null);
^
Run Code Online (Sandbox Code Playgroud)
如果参数System.out.println是null,那么为什么Java编译器会抛出此错误
,但如果参数是true ? null : 42?
类型表达的true ? null : 42是Integer因此它是明确的是System.println(Object)应该被调用.
如果你调用System.println(null)有多个候选方法,编译器无法决定采用哪种方法.
| 归档时间: |
|
| 查看次数: |
1015 次 |
| 最近记录: |