我整整五个小时都在使用Groovy,只是遇到了GroovyNullObject.我阅读了Null对象模式的Groovy 解释,但它没有NullObject直接触及类; 是NullObject仅仅是打算的东西像一个基类NullTree和NullJob?我正在寻找NullObject一些预期的代码String,并且它会导致失败,就像"常规" null一样.
那么,目的是NullObject什么?或者,换句话说,NullObject"常规" null不提供什么价值?
其目的是使用null对象而不是null关键字.
在普通Java中null是一个特殊的关键字,它用于表示引用没有附加到任何对象..这工作正常,但它不处理您尝试使用空引用执行某些操作的情况.
由于null引用不是对象,因此您无法对其执行任何操作,Java将抛出一个NullPointerException.相反,如果你有一个NullObject你的参考将指向这一个而不是什么...当然这NullObject是无法做任何事情,当你试图调用一个方法就没有什么会发生但没有例外将是抛出因为NullObject通过意味着"没有任何对象"它被实现为具有明显结果的对象以避免这些情况.
所以groovy可以处理类似的事情object?.methodName().如果object为null,则 groovy将使用a NullObject,这样隐式检查将执行类似的操作(可能这不是实际的实现,只是为了给你一个想法)
if (object instanceof NullObject)
return new NullObject();
else
return object.someMethod();
Run Code Online (Sandbox Code Playgroud)
总之,需要克服在Java 中使用空引用总是会导致a 的事实NullPointerException.