【发布时间】:2016-08-30 17:26:14
【问题描述】:
此代码可在 Java 6 (IBM Java 6) 中编译和运行,但不能在 Java 8(IBM Java 8 和 Eclipse 的内置编译器)中编译:
public class App {
public static void main(String[] args) {
App app = new App();
app.test(true, new Object());
}
void test(boolean b, Object... objects) {
}
void test(Object... objects) {
}
}
编译错误是:
The method test(boolean, Object[]) is ambiguous for the type App
我在将实际应用程序从 Java 6 迁移到 Java 8 时发现了这个问题。这段代码对我来说看起来不错,因为当 Java 在重载方法中进行选择时,可变参数方法通常用作最后的手段。
这里有什么问题?
【问题讨论】:
-
您需要IBM Java版本,还是您尝试过Oracle版本?
-
我的带有 Java 8 的 Eclipse 对这些声明很好。
-
@AlexK。我的不是。
-
@Tom 我没有尝试 Oracle Java。
-
你会在这里找到解释:stackoverflow.com/questions/7689386/…