@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