Groovy中NullObject类的目的是什么?

Pop*_*ops 6 null groovy

我整整五个小时都在使用Groovy,只是遇到了GroovyNullObject.我阅读了Null对象模式的Groovy 解释,但它没有NullObject直接触及类; 是NullObject仅仅是打算的东西像一个基类NullTreeNullJob?我正在寻找NullObject一些预期的代码String,并且它会导致失败,就像"常规" null一样.

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

Jac*_*ack 8

其目的是使用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.