assert – не то же самое, что методы вроде
assertTrue() из тестовых библиотек. Это зарезервированное
ключевое слово, унарный оператор.
Этот оператор ничего не возвращает, а принимает проверяемое утверждение типа
boolean. Если значение оказывается
false, проверка утверждения считается проваленной и выбрасывается
AssertionError. Это похоже на сокращенную запись пары
if и
throw, с фиксированным типом исключения.
В Java до версии 4 слово
assert не было ключевым. Поэтому для обратной совместимости механизм проверки утверждений выключен по умолчанию – логика программы никогда не должна полагаться на
assert!
Включается флагом
-ea или
-enableassertions команды
java. Можно указывать конкретные классы и пакеты в которых включить. Есть противоположный флаг
-da (
-disableassertions), эти флаги можно использовать в комбинации.
Assertion-ы используются в основном для дополнительной проверки инвариантов состояния объекта и для подстраховки в коде, который не должен никогда вызываться. Выброшенный
AssertionError обычно означает ошибку программиста.
Дополнительно у оператора
assert есть синтаксис передачи параметра
detailMessage в конструктор
AssertionError:
assert 2*2==5 : "two times two is not five!";