2009-12-07 5 views
70

В Java, если импортировать устаревший класс:Подавить осуждается предупреждение импорта в Java

import SomeDeprecatedClass; 

Вы получите это предупреждение: The type SomeDeprecatedClass is deprecated

Есть ли способ, чтобы подавить это предупреждение?

+4

Да, это было бы идеально, но в этом случае я использую библиотеку для Hadoop, которая использует часть своего API, которая была недавно устарела, поэтому у меня нет выбора, если я хочу использовать эту библиотеку. Плюс это только для школьного проекта, а не что-то, что нужно будет поддерживать. –

ответ

97

Используйте эту аннотацию на классе или метода:

@SuppressWarnings("deprecation") 
+12

Это работает с импортом? Я использовал эту аннотацию о методах и т. Д., Но она, похоже, не распознается с импортом. –

+2

Использование аннотации на уровне класса должно также охватывать импорт. Он делает это по крайней мере в Eclipse (ну, Rational Application Developer) для меня, но я не уверен в компиляции в командной строке. – craigforster

+0

Ах да, ставя его на уровне класса, сделал трюк (я тоже использую Eclipse). Я только попытался добавить его выше импорта, который не сработал. Спасибо! –

8

В качестве взлома вы не можете выполнить импорт и использовать полное имя внутри кода.

Возможно, вы также попробуете javac -Xlint: -deprecation не уверен, что бы это касалось.

4

Предположим, что вы переопределении/реализации интерфейса с уходящим способом (например, как getUnicodeStream (String columnLabel) в java.sql.ResultSet), то вы не сможете избавиться от предупреждений об устаревании, просто используя аннотацию @SuppressWarnings («устаревание»), если вы также не аннотируете тот же новый метод с аннотацией @Deprecated. Это логично, потому что в противном случае вы могли бы «переопределить» метод, просто переопределив его описание интерфейса.

+0

Это комбинация «@SuppressWarnings» и «@Deprecated» также работает для вызова устаревших методов внутри вашего собственного метода. – Swav

10

Я решил эту проблему путем изменения импорта в:

import package.* 

затем аннотирования метод, который использовал устаревшие классы с @SuppressWarnings("deprecation")

+0

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

91

Чтобы избежать предупреждения: сделать не импортировать класс

вместо этого используйте полное имя класса

и используйте его как можно в нескольких местах.

+5

+1 Это должен быть принятый ответ. Он имеет преимущество не подавлять усталости на весь класс. –

+7

Это лучший ответ, '@ SuppressWarnings' на уровне класса не охватывает импорт – Alex

+1

Это работает, но это не практично. –

2

вы можете использовать:

JAVAC FileName.java -Xlint: -deprecation

Но тогда это даст вам предупреждения, а также рассказать вам часть кода, которая является причиной устаревания или используя устаревший API. Теперь либо вы можете запустить свой код с этими предупреждениями, либо внести соответствующие изменения в код.

В моем случае я использовал someListItem.addItem("red color"), тогда как компилятор хотел, чтобы я использовал someListItem.add("red color");.

 Смежные вопросы

  • Нет связанных вопросов^_^