我正在研究从 Objective C 移植到 Java 的代码库。没有空检查的方法链接有几种用法
dog.collar().tag().name()
我正在寻找类似于安全取消引用运算符的东西?在 Groovy 中,而不是使用 nullchecks
dog.collar?.tag?.name
这导致Maybe monad有了 Nothing 而不是 Null 的概念。但是当访问值时,我遇到的所有 Nothing 实现都抛出异常,这仍然不能解决链接问题。我让 Nothing 返回一个模拟,其行为类似于 NullObject 模式。但它解决了链接问题。
这个 Nothing 的实现有什么问题吗?
public class Nothing<T> implements Maybe<T> {
private Class<T> klass;
public Nothing(Class<T> klass) {
this.klass = klass;
}
@Override
public T value() {
return mock(klass, Mockito.RETURNS_DEEP_STUBS);
}
}
据我所知
- 在代码中使用模拟库感觉很奇怪
- 它不会在第一个 null 处停止。
- 由于空引用或名称实际上为空,我如何区分空结果?它在 Groovy 代码中是如何区分的?