Groovy中NullObject类的目的是什么?

时间:2010-03-19 19:54:52

标签: groovy null

我一直在使用Groovy五个小时,刚刚遇到Groovy NullObject。我阅读了Groovy explanation of the Null Object Pattern,但它没有直接触及NullObject类; NullObject仅仅是NullTreeNullJob之类的基类吗?我在某些代码中得到了NullObject,这些代码需要String,而且它会导致失败,就像“常规”null一样。

那么,NullObject的目的是什么?或者,换句话说,NullObject提供“常规”null不具有什么价值?

1 个答案:

答案 0 :(得分:8)

其目的是使用 null 对象而不是null关键字。

在普通的Java null中是一个特殊的关键字,它用于表示引用没有附加到任何对象..这工作正常,但它不处理你尝试做某事的情况 null 引用。

由于 null 引用不是对象,因此您无法对其执行任何操作,Java将引发NullPointerException。相反,如果你有一个NullObject你的引用将指向这一个而不是什么...当然这个NullObject无法做任何事情,当你试图调用一个方法时在它上面什么都不会发生,但是不会抛出任何异常,因为通过NullObject意味着“没有任何对象”它被实现为具有避免这些情况的明显结果的对象。

因此groovy可以处理像object?.methodName()这样的事情。如果object是 null groovy将使用NullObject,这样这个隐式检查会做类似的事情(也许这不是实际的实现,只是为了给你一个想法)

if (object instanceof NullObject)
  return new NullObject();
else
  return object.someMethod();

总之,需要克服在Java中使用 null 引用总是会导致NullPointerException的事实。