ПОДЕРЖАЙТЕ!
Ствердження видаляються під час виконання, якщо ви чітко не вказали "включити твердження" при складанні коду. Затвердження Java не повинні використовуватися у виробничому коді і повинні бути обмежені приватними методами (див. Виняток проти твердження ), оскільки очікується, що приватні методи будуть відомі та використовуються лише розробниками. Також assert
викине AssertionError, який Error
не поширюється Exception
, і який зазвичай вказує на те, що у вас є дуже ненормальна помилка (наприклад, "OutOfMemoryError", яку важко відновити, чи не так?), Від вас не очікується можливість лікувати.
Видаліть прапор "утвердити твердження" та перевірте за допомогою налагоджувача, і ви побачите, що не будете наступати на виклик кидка IllegalArgumentException ... оскільки цей код не був скомпільований (знову ж таки, коли "ea" видалено)
Краще використовувати другу конструкцію для публічних / захищених методів, і якщо ви хочете щось зробити в одному рядку коду, є принаймні один спосіб, про який я знаю. Я особисто використовую клас Spring Framework , Assert
який має декілька методів перевірки аргументів, які кидають "IllegalArgumentException" при відмові. В основному, ви робите це:
Assert.notNull(obj, "object was null");
... Який насправді буде виконувати точно той самий код, який ви написали у своєму другому прикладі. Є кілька інших корисних методів, таких як hasText
, hasLength
там.
Мені не подобається писати більше коду, ніж потрібно, тому я щасливий, коли скорочую кількість записаних рядків на 2 (2 рядки> 1 рядок) :-)
obj.hashCode()
замість цього ;-)