Sat*_*ish 2 java monads null groovy nullpointerexception
我正在研究从Objective C移植到Java的代码库.没有nullchecks的方法链接有几种用法
dog.collar().tag().name()
Run Code Online (Sandbox Code Playgroud)
我正在寻找类似于安全解除引用运算符的东西?在Groovy而不是nullchecks
dog.collar?.tag?.name
Run Code Online (Sandbox Code Playgroud)
这导致了可能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);
}
}
Run Code Online (Sandbox Code Playgroud)
据我所知
我不建议只检查空值.真的,我建议甚至不要返回null,而是抛出异常.
在任何一种情况下,你都不会通过这种空对象方法更快地编写代码,而且我认为你最终会因为想要复制不同编程语言的特性而混淆某人.我认为你应该适应你正在使用的语言.
| 归档时间: |
|
| 查看次数: |
4265 次 |
| 最近记录: |