chi*_*ity 6 java overloading javac variadic-functions ambiguous-call
我刚刚写了一些具有以下结构的代码:
public void method(int x) {
//...
}
public void method(int x, String... things) {
//...
}
Run Code Online (Sandbox Code Playgroud)
我很惊讶这编译了,如果我调用的话
method(3);
Run Code Online (Sandbox Code Playgroud)
然后它会选择第一个.显然,这在某种意义上是自然选择的,但如果第一种方法不存在,这将是调用第二种方法的合理方式(使用空的varargs数组).所以它应该被认为是模糊的并产生编译时错误?
或者这被视为特例?
这样对待它似乎是错误的,因为这意味着添加新方法可能会破坏现有代码,这不是一个非常幸福的事态.
(Goodness只知道如果第一个被添加为包含第二个子类的子类的新方法,你最终会调用哪个...)
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |