Устаревший класс Java с использованием устаревшего класса - можно ли отключить предупреждение компилятора? - PullRequest
2 голосов
/ 10 августа 2010

Я работаю над устаревшим набором классов Java, чтобы они больше не использовались. Я не хочу отключать предупреждения компилятора об устаревшем использовании, но обнаруживаю, что если один из моих устаревших классов импортирует другой устаревший класс, я тоже получаю предупреждение об этом. Я не хочу изменять код, который я осуждаю, но я также не хочу предупреждение для этих случаев. Есть ли способ (а) аннотировать / комментировать код, чтобы отключить предупреждение (б) отключить предупреждения компилятора в этих случаях? Я использую NetBeans, поэтому, если есть особый способ NetBeans, он тоже работает.

Вот краткий пример:

Первый класс:

/**
 * @deprecated No longer in use.
 **/
@Deprecated
public class OldSubClass {
}

Второй класс:

import com.old.package.OldSubClass; // Don't want this to create a warning

/**
 * @deprecated No longer in use.
 **/    
@Deprecated
public class OldClass {
       // code that makes use of OldSubClass that I don't want to change ...
       // Any methods that use OldSubClass are also deprecated ...
}

Хорошо, это тот самый минимум, который позволяет мне воспроизвести проблему (даже при включенном @SupressWarnings:

Материнский класс:

import another.pack.ChildClass;

@SuppressWarnings("deprecation")
public class MotherClass {
}

Детский класс:

package another.pack;

/**
 * @deprecated
 */
public class ChildClass {
}

Обратите внимание, что это тег JavaDoc @deprecated, который даже позволяет компилятору выдавать предупреждение. Если я использую только аннотацию @Deprecated, я никогда не получу предупреждение (даже без подавления).

Ответы [ 2 ]

3 голосов
/ 10 августа 2010

Вы можете использовать эту другую аннотацию:

@ SuppressWarnings («устаревание»)

Вы помещаете эту аннотацию только в родительский класс.Вы сохраните предупреждение при импорте OldClass, но «рекурсивное предупреждение» для OldSubClass будет проигнорировано.

0 голосов
/ 10 августа 2010

NetBeans использует javac (из JDK 7), чтобы определить, когда и где показывать подобные предупреждения, поэтому все, что работает с jdk7/bin/javac, должно работать в редакторе IDE точно так же.

...