我已经使用 Groovy 五个小时了,刚刚发现Groovy NullObject http://groovy.codehaus.org/api/index.html?org/codehaus/groovy/runtime/NullObject.html。我读了《Groovy》空对象模式的解释 http://groovy.codehaus.org/Null+Object+Pattern,但它并没有触及NullObject
直接上课;是NullObject
只是为了成为诸如此类的基类NullTree
and NullJob
?我得到了一个NullObject
回到一些期望的代码String
,并且它会像“常规”一样导致失败null
将有。
那么,这样做的目的是什么NullObject
?或者,换句话来说,价值是什么NullObject
提供“常规”null
不是吗?
其目的是有一个null对象而不是一个null
关键词。
在普通Java中null
是一个特殊的关键字,它用于表示引用未附加到任何对象。这工作正常,但它不能处理您尝试使用 a 执行某些操作的情况null参考。
Since a null引用不是一个对象,你不能对它做任何事情,Java 会抛出一个NullPointerException
。相反,如果你有NullObject
你的参考将指向这个而不是指向任何东西..当然这个NullObject
无法执行任何操作,当您尝试调用它的方法时,不会发生任何事情,但不会抛出异常,因为尽管如此NullObject
意味着“不存在任何对象”,它被实现为具有明显后果的对象,以避免这些情况。
这样 groovy 就可以处理类似的事情object?.methodName()
。如果对象是nullgroovy 将使用NullObject
这样这个隐式检查就会做类似的事情(也许这不是实际的实现,只是为了给你一个想法)
if (object instanceof NullObject)
return new NullObject();
else
return object.someMethod();
总之,需要克服这样一个事实:使用nullJava 中的引用总是会导致NullPointerException
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)