Объединение нескольких аннотаций @SuppressWarnings - Eclipse Indigo

149

Таким образом, проблема заключается в возможности комбинировать несколько подавлений предупреждений, чтобы каждый элемент не нуждался в собственной @SuppressWarningsаннотации.

Так, например:

public class Example
    public Example() {
        GO go = new GO();  // unused
        ....
        List<String> list = ( List<String> ) go.getList(); // unchecked
    }
    ...
    // getters/setters/other methods
}

Теперь вместо двух @SuppressWarningsя хочу иметь одно на уровне класса для этих двух предупреждений, вот так:

@SuppressWarnings( "unused", "unchecked" )
public class Example
    public Example() {
        GO go = new GO();  // unused - suppressed
        ....
        List<String> list = ( List<String> ) go.getList(); // unchecked - suppressed
    }
    ...
    // getters/setters/other methods
}

Но это неверный синтаксис, есть ли способ сделать это?

knownasilya
источник
@SuppressWarnings ("unused", "unchecked") не работает, измените его на @SuppressWarnings ({"unused", "unchecked"})
Радж

Ответы:

304

Используйте следующее: @SuppressWarnings({"unused", "unchecked"})

Луго
источник
Это нормальное соглашение для всех аннотаций в Eclipse?
известноасиля
1
Нет. Это для параметра списка. При использовании SDK для запуска Eclipse (или когда подключены исходные коды Java), вы можете просто нажать F3 в любой аннотации, чтобы увидеть объявление ее источника, тем самым также увидев, сколько (и каких) параметров ему нужно.
Bananeweizen
8
Это был бы массив, как в String[] value(). Списки не имеют специального синтаксиса в Java, но массивы могут быть определены с помощью фигурных скобок.
Maarten Bodewes
14

Если вы загляните внутрь аннотации, вы увидите это:

public @interface SuppressWarnings {
    String[] value();
}

как видите, параметр value является массивом Strings ... поэтому параметр в аннотации может быть: value1, value2 или value3, где

final String[] value1 = { "a1" };
final String[] value2 = { "a1", "a2" };
final String[] value3 = { "a1", "a2", "a3" };

то есть:

@SuppressWarnings({"unused"})
@SuppressWarnings({"unused", "javadoc"})

вы можете часто видеть что-то вроде

@SuppressWarnings("unused") 

и это частный случай, допускающий один элемент без " {} "

ΦXocę 웃 Пепеупа ツ
источник