我有三个java8 Optionals,并希望以首选顺序返回实际存在的任何一个。似乎应该有一种简单的方法可以像这样链接它们:
return optionalA.orElseIfPresent(optionalB).orElseIfPresent(optionalC);
如果这三个都为空,那么应该返回一个Optional.empty()
。
现有的orElse和orElseGet不能真正胜任这项任务-它们必须返回一个实际值,因此剩余的回退不可能是Optionals本身。
在最坏的情况下,我可能会有一长串ifPresent()检查,但似乎有更好的方法来处理它?
我喜欢JB Nizet的答案(投票结果也是一样)。或者,仅使用可选
(无论出于何种原因):
Optional.ofNullable(
optionalA.orElse(
optionalB.orElse(
optionalC.orElse(null))
)
);
这属于缩进/括号疯狂,我个人不喜欢。
return Stream.of(optional1, optional2, optional3)
.filter(Optional::isPresent)
.map(Optional::get)
.findFirst();
问题内容: 如何通过使用和避免返回值? 例: 问题答案: 要返回可选值的值,或者返回默认值(如果可选值没有值),则可以使用。 请注意,我重写了查找最长名称的代码:您可以直接与比较器比较每个String的长度。可以通过调用键提取器作为方法引用来获得一个这样的比较器。
我正在尝试这样做: 实际上,我想要的是返回一个可选的。of(foundVal)如果找到,否则为可选。空()。我不认为这是可选的。of(null)等于该值。我想用什么语法? 也就是说,如何获取映射以返回正确的可选映射?
问题内容: 我正在尝试从WCF服务返回一些JSON。该服务仅从我的数据库返回一些内容。我可以得到数据。但是,我担心JSON的格式。当前,返回的JSON格式如下: 实际上,我希望JSON的格式尽可能整洁。我相信(我可能是不正确的),以干净的JSON表示的相同结果集应如下所示: 我不知道“ d”来自哪里。我也不知道为什么要插入转义字符。我的实体如下所示: 负责返回内容的服务定义为: 如何从WCF服务返
我将这个方法设置为从Spring Boot rest控制器返回一个响应: 这是DAO方法: 我成功地拥有一个json对象作为响应,但格式如下: 当我期待有: 为什么将结果集插入到< code>#result-set-1键中?我如何改变这种行为?
我有下表: 对于两组中的每一组,我想返回所有可能的值组合。对于组1,例如,可能的组合是(A, B)、(A, C)、(A, D)、(B, C)、(B, D)、(C, D)、(A, B, C)、(B, D, C)、(C, A, B)。类似地,对于组2,它是(A, B)、(A, C)、(B, C)[备注:我不想考虑(1)只有一个值的组合,(2)所有值的组合和(3)没有值的组合。因此,对于n个不同的值,我
可选的用于表示可为空的对象,该类的一些用途包括 作为方法返回类型,作为返回null以 表示没有可用值的替代方法 区分“未知”(例如,不存在于映射中)和“已知无值”(存在于映射中,具有值 optional.缺席()) 将可为null的引用包装起来存储在不支持null的集合中(不过有几种其他方法应该首先考虑) 对于第一种情况,我是否需要在所有可为空的返回方法中返回可选的?