Groovy нулевой безопасный оператор не работает - PullRequest
0 голосов
/ 02 мая 2018

Попытка сделать это:

var = obj?.Prop ?: obj.Prop.toLowerCase()

Но я продолжаю получать:

java.lang.NullPointerException: Cannot get property 'Prop' on null object

Разве не для этого ?? Насколько я понимаю, obj? .Prop такой же, как:

if ( obj != null && obj.Prop ) { .. }

Иногда obj имеет значение null, но если это не так, я хочу установить obj.Prop в нижний регистр - невозможно установить значениеLowerCase () для нулевого объекта

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Вам нужно будет сделать obj?.Prop?.toLowerCase()

Elvis operato r (?:) вызывает оценку obj.Prop.toLowerCase(), когда obj?.Prop равно нулю. Это эквивалентно написанию

var = (obj?.Prop != null) ? obj.Prop : obj.Prop.toLowerCase()
0 голосов
/ 02 мая 2018

Выражение после?: Является альтернативой для случая, когда предыдущее выражение равно нулю. Если в вашей альтернативе вы используете тот же объект, что и в предыдущей части, то вы вызовете npe

Вместо этого

obj?.Prop?.toLowerCase()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...