Его цель - создать объект null вместо ключевого слова null
.
В обычной Java null
- это специальное ключевое слово, которое используется для обозначения того, что ссылка не привязана ни к какому объекту ... это прекрасно работает, но не обрабатывает ситуации, в которых вы пытаетесь что-то сделать с ноль ссылка.
Поскольку ссылка null не является объектом, вы ничего не можете с ним сделать, и Java выдаст NullPointerException
. С другой стороны, если у вас есть NullObject
, ваша ссылка будет указывать на эту, а не на ничто .. конечно, этот NullObject
не сможет ничего сделать, когда вы попытаетесь вызвать метод для него, ничто не будет произойдет, но исключение не будет выдано, потому что «* 1016» означает «отсутствие какого-либо объекта», он реализован как объект с очевидной последовательностью, чтобы избежать подобных ситуаций.
Так что Groovy может обрабатывать такие вещи, как object?.methodName()
. Если object null groovy будет использовать NullObject
, так что эта неявная проверка будет выглядеть примерно так (возможно, это не фактическая реализация, просто чтобы дать вам идею)
if (object instanceof NullObject)
return new NullObject();
else
return object.someMethod();
В заключение необходимо преодолеть тот факт, что использование ссылки null в Java всегда будет вызывать NullPointerException
.