我们的Java项目中有一个LogManager类,长这样:
使用从eclipse.org下载的 tar.gz 安装的 Eclipse 不管是否安装了 OpenJDK 6 都可以编译它。
非常感谢您的帮助!
编辑:编译器在两种情况下都会得到选项
public class LogManager {
public void log(Level logLevel, Object... args) {
// do something
}
public void log(Level logLevel, int value, Object... args) {
// do something else
}
}
在Debian下使用OpenJDK 6编译项目时一切正常。但是,当使用OpenJDK 7进行构建(使用ant完成)时,则会出现以下错误并导致构建失败:
[javac] /…/LogManager.java:123: error: reference to log is ambiguous,
both method log(Level,Object...) in LogManager
and method log(Level,int,Object...) in LogManager match
[javac] log(logLevel, 1, logMessage);
[javac] ^
[javac] /…/SomeOtherClass.java:123: error: reference to log is ambiguous,
both method log(Level,Object...) in LogManager
and method log(Level,int,Object...) in LogManager match
[javac] logger.log(logLevel, 1, logMessage);
[javac] ^
只要 1 没有自动装箱,方法调用就应该是清晰的,因为 1 是 int 类型,无法向上转型为 Object。那么为什么自动装箱没有在此处覆盖 varargs?使用从eclipse.org下载的 tar.gz 安装的 Eclipse 不管是否安装了 OpenJDK 6 都可以编译它。
非常感谢您的帮助!
编辑:编译器在两种情况下都会得到选项
source="1.6"
和 target="1.6"
。Eclipse 的编译说明只是作为注释。