@SuppressWarnings – co tutaj można wpisać?

@SuppressWarnings w dużym skrócie służy do „wyciszania” ostrzeżeń. Tylko, że jest tutaj mały problem – parametryzacja jest dokonana za pomocą ciągów znaków (String), co nie ułatwia korzystania z tej adnotacji. Przyjrzymy się tutaj oficjalnym literałom jak i tym wspieranym przez IntelliJ IDEA.

Wspierane literały w Java 8

Jako że, literały są wspierane per wersja, będę odnosił się tutaj do tych wspieranych w wersji Java 8.

rawtypes

Dotyczy używania „surowych typów” – jeśli klasa jest generyczna (jak na przykład ArrayList) a my używamy jej bez podania typu:

List list = new ArrayList();

unchecked

Dotyczy podobnej sytuacji jak dla rawtypes lecz w typ przypadku chodzi o przesyłanie argumentów generycznych bez zdefiniowania typu generycznego (często rawtypes i unchecked występują razem):

List list = new ArrayList();
list.add("abc");

serial

Dotyczy barku serialVersionUID w klasie. Aktualnie rzadko kiedy dostajemy takie ostrzeżenie (występuje głównie w Eclipse), ponieważ jest ono generowane automatycznie.

deprecation

Dotyczy sytuacji gdy używamy deprecjonowanych metod/klas/… .

fallthrough

Dotyczy braków instrukcji break w każdym przypadku dla instrukcji switch (patrz ocena 3 i 4):

switch(ocena) {
         case '5' :
            System.out.println("Świetnie!");
            break;
         case '4' :
         case '3' :
            System.out.println("Dobra robota");
            break;
         case '2' :
            System.out.println("Zaliczyłeś");
         case '1' :
            System.out.println("Spróbuj ponownie");
            break;
         default :
            System.out.println("Niepoprawna ocena");
}

usused

Dotyczy sytuacji gdy w ramach danego projektu jakiś element kodu jest nie użyty.

null

Dotyczy sytuacji gdy statyczna analiza kodu wykrywa potencjalną wartość null, która jest używana kilka linijek niżej:

String a = null;

a.substring(1,4);

cast

Dotyczy sytuacji gdy rzutujemy obiekt na dany typ bez uprzedniego sprawdzenia jego typu.

boxing

Dotyczy sytuacji automatycznego opakowywania/rozpakowywania typów prostych/klas.

resource

Dotyczy sytuacji gdy jakiś zasób nie został zamknięty (metoda close()). Na przykład jakiś strumień.

Przykładowe literały wspierane w IntelliJ IDEA

FieldMayBeFinal

Dotyczy pól klas, które potencjalnie mogłyby być finalne.

SameParameterValue

Dotyczy sytuacji gdy do metody za każdym razem jest przekazywana taka sama wartość (na przykład w testach).

I inne

Ktoś zrobił dobrą robotę i stworzył listę literałów wspieranych w IntelliJ IDEA – https://gist.github.com/vegaasen/157fbc6dce8545b7f12c .

W Eclipse

Dla środowiska programistycznego Eclipse rodzaje ostrzeżeń są dostępne w dokumentacji – https://help.eclipse.org/latest/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-suppress_warnings.htm