Почему я не могу подавить предупреждения в пакете?

Я вижу из javadoc, что аннотация @SuppressWarnings относится к

TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE

цели. Почему это не относится также к PACKAGE?

У меня есть сгенерированный код, который содержит некоторые предупреждения типов типов. Я хотел бы добавить файл package-info.java для сгенерированных классов (в отдельном физическом каталоге, но тот же пакет java), который говорит eclipse игнорировать любые необработанные типы предупреждений, исходящих из сгенерированных классов в пакете.

Почему это не поддерживается? Есть ли альтернативный способ подавления предупреждения в целом пакете?

Ответы

Ответ 1

Причина, по которой запрет предупреждений на уровне пакета недопустим, объяснялся в ответе на старый отчет об ошибке (Status - Closed, Not Fix): Разрешить SuppressWarnings указывать на уровне пакета.

Предупреждения фактически указывают на потенциальные проблемы в сгенерированный код.

В настоящее время SuppressWarnings обладают желательным свойством влияет только на лексически вложенный код. Это означает, что вы может сразу увидеть, может ли предупреждение быть подавлено в кода, который вы читаете.

Это предложение нарушит это свойство, чтобы решить необычный проблема, которая в большинстве случаев может быть решена.

В этом ответе также предлагается несколько работ.

  • скомпилировать сгенерированный код самостоятельно, используя -source 1.4 и -target 5.

  • запросить обновленную версию javacc, которая либо использует suppresswarnings или не генерирует код, который вызывает предупреждения.

Я думаю, что первое предложение, поместив сгенерированный код в его собственный проект, должно работать на вас. Второе предложение выглядит как более специфичное для проблемы в отчете об ошибке. Я не знаю, используете ли вы javacc или нет.

Ответ 2

Хороший вопрос. Вероятно, это будет исправлено Oracle в будущем.

Но теперь я могу предложить вам следующее. Поместите весь сгенерированный код в отдельный проект. Кстати, это обычная практика. Затем настройте этот проект, чтобы быть терпеливым к предупреждениям. Например, в eclipse вы можете открыть свойства проекта /Java Compiler/Errors/Warings, выбрать "включить специальные настройки проекта" и отключить все предупреждения.