Код: Выделить всё
public class LogManager {
public void log(Level logLevel, Object... args) {
// do something
}
public void log(Level logLevel, int value, Object... args) {
// do something else
}
}
работает нормально. При использовании 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 является целым числом и не может быть преобразовано в Object. Так почему же
автобокс здесь не отменяет переменные аргументы?
Eclipse (установленный с использованием tar.gz с сайта eclipse.org) компилирует его без
неважно установлен ли OpenJDK 6 или нет.
Большое спасибо за помощь!
Изменить:
Компилятор получает опцию source="1.6" и target="1.6"< /код> в обоих случаях. Примечание о компиляции Eclipse представляет собой просто комментарий.
Подробнее здесь: https://stackoverflow.com/questions/768 ... -in-java-7
Мобильная версия