Я объясню на примере:
Оператор Элвиса (?:)
"Оператор Элвиса" - это сокращение тройного оператора Java. Один пример того, где это удобно, возврат значения "разумного значения по умолчанию" если выражение разрешает false или ноль. Простой пример может выглядеть так: это:
def gender = user.male ? "male" : "female" //traditional ternary operator usage
def displayName = user.name ?: "Anonymous" //more compact Elvis operator
Оператор безопасной навигации (?.)
Используется оператор безопасной навигации чтобы избежать исключения NullPointerException. Обычно, когда у вас есть ссылка на объект, который, возможно, потребуется проверить что он не имеет значения null до доступа методов или свойств объекта. Чтобы избежать этого, безопасная навигация оператор просто вернет null вместо того, чтобы бросать исключение, например так:
def user = User.find( "admin" ) //this might be null if 'admin' does not exist
def streetName = user?.address?.street //streetName will be null if user or user.address is null - no NPE thrown