Почему автобокс не отменяет переменные аргументы при использовании перегрузки методов в Java 7?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему автобокс не отменяет переменные аргументы при использовании перегрузки методов в Java 7?

Сообщение Anonymous »

В нашем Java-проекте есть класс LogManager, который выглядит следующим образом:

Код: Выделить всё

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 6 под Debian все
работает нормально. При использовании 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 является целым числом и не может быть преобразовано в Object. Так почему же
автобокс здесь не отменяет переменные аргументы?

Eclipse (установленный с использованием tar.gz с сайта eclipse.org) компилирует его без
неважно установлен ли OpenJDK 6 или нет.

Большое спасибо за помощь!

Изменить:

Компилятор получает опцию source="1.6" и target="1.6"< /код> в обоих случаях. Примечание о компиляции Eclipse представляет собой просто комментарий.

Подробнее здесь: https://stackoverflow.com/questions/768 ... -in-java-7
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»