Я видел в каком-то отличном коде это:
trip.id?.encodeAsHTML()
В чем разница между использованием или отсутствием использования "id?"?? 1004 *
Проверяет, является ли объект нулевым или нет. Используя его, вы можете предотвратить исключение нулевого указателя.
Если вы используете его, вы должны использовать его для всего объекта (например: trip.id?.otherstuff?.morestuff?.encodeAsHTML()
Это называется «нулевой оператор разыменования». Разница в том, что если trip.id равно нулю, вместо NullPointerException, он вернет null в результате вызова метода.
trip.id
NullPointerException
null
Это Groovy нуль-безопасный оператор.Он выполняет нулевую проверку перед разыменованием объекта.Подробнее о Groovy Operators здесь .