В этом случае, если phoneInstance имеет значение null, он не пытается получить свойство name и вызывает NPE - он просто устанавливает значение тега поля равным нулю.
Ответ 2
Оператор ? допускает нулевые значения в Groovy (и, следовательно, GSP). Например, обычно в gsp,
теперь значение ${priceDetails?.amount} равно null, вместо того, чтобы выбрасывать исключение нулевого указателя.
Ответ 3
Это очень важная функция в Groovy. Если объект является нулевым (т.е. "phoneInstance" имеет значение NULL), тогда он предоставляет значение "null". Эта особенность называется "Safe Navigation Operator". Просто, когда мы используем эту функцию, нет необходимости в проверке объекта ( "phoneInstance" ) является нулевым или нет.
Ответ 4
безопасный навигационный оператор (?.) возвращает null, если объект слева равен null, иначе он возвращает значение правого члена этого объекта. поэтому phoneInstance?.name является только сокращенным для phoneInstance == null ? null : phoneInstance.name