Как избежать использования @SuppressWarnings? - PullRequest
0 голосов
/ 03 апреля 2012

Я использую Java-библиотеку с открытым исходным кодом под названием Weka в проекте Eclipse Indigo.Библиотека кажется немного устаревшей, поэтому Eclipse показывает мне тысячи предупреждений относительно ее кода.Типичный пример:

ArrayList является необработанным типом.Ссылки на универсальный тип ArrayList должны быть параметризованы

В отношении такой строки:

ArrayList t = new ArrayList();

Быстрое исправление Eclipse указывает, что я могу либо преобразовать приведенный выше код виспользуйте дженерики или что я могу добавить аннотацию @ SuppressWarnings 'rawtypes' в качестве исправления.

Но оба эти исправления включают внесение изменений в код проекта с открытым исходным кодом, и я быпридется вносить эти изменения несколько (сотни?) раз.

Вместо этого могут быть глобальные настройки для Eclipse (или компилятора Java?), где я могу указать, что не хочу, чтобы меня предупреждаликонкретный проект?

Ответы [ 4 ]

4 голосов
/ 03 апреля 2012

Окно> Настройки> Java> Компилятор> Ошибки / предупреждения> Общие типы.В качестве альтернативы это можно установить для каждого отдельного проекта (если в вашей рабочей области есть другие проекты, которые вы хотите оставить прежними), щелкнув правой кнопкой мыши проект> Свойства> Java> Ошибки / Предупреждения> Отметьте «Включить специфичные для проекта настройки».а затем, как и прежде.

1 голос
/ 03 апреля 2012

Было предложено просто отключить «оскорбительные» предупреждения через Window> Preferences, но это отключит их для всех проектов в вашей рабочей области, включая проекты, содержащие ваш собственный код Java 1.5+. Это плохая идея, потому что вы должны обращать внимание на предупреждения, если они появляются в вашем коде. (Если вы игнорируете их, вы можете получить неожиданные исключения во время выполнения.)

Другая возможность - изменить настройки проекта, чтобы установить исходный уровень компилятора Java на Java 1.4 или более ранней. Вы должны только сделать это в проекте Weka. Проект, содержащий ваш код, должен использовать исходный уровень по крайней мере Java 1.5 ..., учитывая, что вы используете дженерики.


Спасибо. Может ли это вызвать проблемы позже, когда я разверну проект на производственном сервере с JRE 1.6? Разве мне не нужно, чтобы там присутствовал JRE 1.4?

Нет ... по нескольким причинам:

  • Если вы не изменяете Weka, вы можете использовать оригинальные JAR-файлы и игнорировать любые артефакты сборки, созданные Eclipse.

  • Уровень источника и целевой уровень различны. Уровень исходного кода говорит о том, какой версии языка Java должен соответствовать исходный код. Целевой уровень говорит, какую версию формата файла классов следует использовать. Вы можете получить компилятор Java для генерации формата байт-кода Java 1.6 для исходного кода Java 1.4. (Но не наоборот).

  • Java 1.6 JRE с удовольствием запустит Java 1.4 JAR.

Кроме того, где я могу это сделать? Вы имеете в виду Project> Properties> Java Compiler> Уровень соответствия компилятора?

Да. Обратите внимание, что он позволяет вам определять исходный и целевой уровни независимо ... по модулю ограничения, что компиляторы Java допускают только определенные комбинации.

1 голос
/ 03 апреля 2012

В Eclipse перейдите в Window-> Preferences-> Java-> Compiler-> Errors / Warnings-> Generic types, здесь вы найдете категорию «Использование необработанного типа», которую вы можете установить, чтобы игнорировать, а не предупреждать.

1 голос
/ 03 апреля 2012

Попробуйте Окно-> Настройки, Java-> Компилятор-> Ошибки / Предупреждения. Я вижу раздел "Общие типы" в нижней части. Я не знаю, действительно ли это то, что вы ищете, но из моего опыта это хорошее место, чтобы игнорировать конкретные предупреждения Eclipse.

...