metoda assert powinna być używana do walidacji argumentów metod prywatnych, nie powinna sprawdzac argumentow metod publicznych. Walidacja argumentów metod publicznych powinna działać w oparciu o IllegalArgumentException i inne wyjątki. W przypadku metod publicznych może przyjść każdy rodzaj danych. Metody prywatne zwykle spodziewają się konkretnych wartości bo wynika to z logiki biznesowej.
Asercji nie trzeba importować.
występują w dwóch wersjach: assert(expession1)
oraz assert(xpression1):expression2;
expression1 musi zwracac true or false (lub być takim obiektem lub literalem)
expression2 musi zwracać wartość, ta wartość przekazywana jest do konstruktora AssertionError a ten woła na nim
metode toString() a treść wyświetla jako detailed message.
włączenie: java -ea Main
java -enableassertions com.Main
tylko w kodzie developerskim, na produkcji sie wyłącza.
Mogą mieć dodatkowe obiążenie jesli wykonują operacje na dużej ilości elementów
debuging kodu
lepiej czytelny, lepszy maintenance