gpt4 book ai didi

java-8 可选的双重检查

转载 作者:行者123 更新时间:2023-11-30 06:15:26 26 4
gpt4 key购买 nike

我喜欢 java-8 的可选转换风格。所以我想检查双空值。

class A {
public String getSome() {
return ""; // some string
}
}

class B {
public String getSome() {
return ""; // some string
}
}
class T {
A a;
B b;

public String result() {
if (a.getSome() != null) {
if (b.getSome() != null) {
return a+b;
} else {
throw new RuntimeException();
}
} else {
throw new RuntimeException();
}
}
}

如何将 T.result() 转换为可选样式?

我试过这种风格,但 IDE 告诉我“循环界面”。

public String result() {
return Optional.ofNullable(a.getSome())
.map(a -> {
return Optional.ofNullable(b.getSome())
.map(b -> {
return a + b;
})
.orElseThrow(RuntimeException::new);
})
.orElseThrow(RuntimeException::new);
}

最佳答案

虽然@Eran 给出了一个可能的解决方案,但我认为您不会通过使用链接和可选来增加简单性。

新的 Java 8 API 和特性不能替代所有 Java 8 之前的代码。有很多问题,例如关于使用 Stream 来执行一些任务,而一个简单的 for 循环就可以解决问题。

在您的情况下,因为您只想检查引用是否不是 null,只需执行以下操作:

public String result() {
return Objects.requireNonNull(a.getSome()) + Objects.requireNonNull(b.getSome());
}

关于java-8 可选的双重检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28806120/

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