Это одна вещь, которая мне действительно нравится в Groovy, когда я играл с ним,? оператор, который автоматически проверяется на нулевые ссылки.
В Java такого нет, просто нужно протестировать любую иерархию объектов, которую вы просматриваете, чтобы проверить нулевые значения:
if (object1 != null && obecjt1.obecjt2 != null && object1.object2.object3 != null)
do_something_awesome_with(object1.object2.object3);
Тем не менее, ваш пример всегда будет вызывать проблемы, потому что Groovy? оператор просто останавливает ваш обход, когда встречает нулевую ссылку и возвращает нулевое значение.