作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 methodC() 接受两个非可选参数,这两个参数都被包装并从之前调用的其他两个方法返回。
Optional<String> s1Optional = methodA();
Optional<String> s2Optional = methodB();
方法 C 定义:
private Optional<String> methodC(String s1, String s2){
return Optional.ofNullable("abc");
}
我不想使用 s1Optional.get() 和 s2Optional.get() 作为 methodC() 的参数,因为它违背了使用 Optional 的唯一目的。
我知道我可以用
s1Optional.map(s1 -> methodC(s1, s2Optional).orElseGet(Optional.get());
仅当 s1Optional 不为空时才能从 methodC() 获得有效返回,但要求是我应该对 s2Optional 执行相同的操作。即,我应该检查 s1Optional 和 s2Optional 以执行 methodC。
我知道并不总是需要使用 Optionals,但我只是在玩,甚至想知道这是否可能。
最佳答案
我不太确定我是否理解正确,但我认为您可以嵌套 map 方法调用来实现您想要的。
s1Optional.map(
s1 -> s2Optional.map(s2 -> methodC(s1, s2).orElse("")));
虽然这看起来很丑陋。为什么不首先检查 s1Optional
和 s2Optional
是否都有值?
if s1Optional.isPresent() && s2Optional.isPresent() {
anotherMethod(s1Optional.get(), s2Optional.get());
}
关于java - 在调用方法之前检查两个可选内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42983602/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!