gpt4 book ai didi

java - Java 中的 Null 安全取消引用,如 ?.在 Groovy 中使用 Maybe monad

转载 作者:行者123 更新时间:2023-12-01 22:00:26 26 4
gpt4 key购买 nike

我正在开发从 Objective C 移植到 Java 的代码库。没有空检查的方法链有多种用法

dog.collar().tag().name()

我正在寻找类似于safe-dereferencing operator的东西?。在 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);
}
}

据我所知

  1. 在代码中使用模拟库感觉很奇怪
  2. 它不会在第一个 null 处停止。
  3. 如何区分由于空引用或名称实际上为空而导致的空结果?在Groovy代码中如何区分?

最佳答案

我真的不建议只检查空值。真的,我建议甚至不要返回 null,而是抛出异常。

无论哪种情况,您都不会通过执行此空对象方法来使代码更快,而且我认为您最终只会因为想要复制不同编程语言的功能而使某人感到困惑。我认为您应该适应您正在使用的语言。

关于java - Java 中的 Null 安全取消引用,如 ?.在 Groovy 中使用 Maybe monad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2900170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com