Мой проект имеет код вроде следующего:Chaining Null-Safe Operator
params.stringValue?.trim().replaceAll('aa', 'a')
Мы ожидали, что если params.stringValue
был нулевым, что какtrim()
и replaceAll()
бы не назвать.
Однако мы получали NullPointerException
в этой строке, говоря, что replaceAll()
не может быть вызван нулевым объектом.
Нам пришлось изменить код, чтобы быть похожим на это:
params.stringValue?.trim()?.replaceAll('aa', 'a')
Почему первый фрагмент кода выше, не работает? Является ли это ошибкой в Groovy, что она продолжает оценивать выражение после того, как однажды был встречен null?
Я думаю, что это «особенность», а не ошибка (!) – Armand