这个问题在这里已经有答案了:
Java8中的链接选项(7个答案)
上个月关门了。
我有一个可以包含多个可选id的类,该类将选择第一个可用id并将其返回给调用者。像下面这样。
Optional<Phone> homePhone;
Optional<Phone> mobilePhone;
Optional<Phone> emergencyPhone;
Phone getBestPhone() {
return homePhone.map(p -> p)
.orElse(mobilePhone.map(p -> p)
.orElse(emergencyPhone.map(p -> p)
.orElseThrow(() -> new IllegalArgument("No valid phone")))));
}
我想使用可选的方法,如map和orelse,但在这种情况下,它会导致太多的嵌套。可能需要另外两个伪代码选项。
Phone getBestPhone() {
homePhone.ifPresent(p -> { return p; });
mobilePhone.ifPresent(p -> { return p; });
emergencyPhone.ifPresent(p -> { return p; });
throw new IllegalArgument("...");
}
Phone getBestPhone() {
return FirstPresent(homePhone, mobilePhone, emergencyPhone);
}
有没有比我现有的方法更好的方法?我很想通过执行vanilla ispresent()检查来避免嵌套。
1条答案
按热度按时间cedebl8k1#
国际海事组织,
firstPersent
这种方法似乎更具可读性和可扩展性。我们可以利用Stream#of(T...)
方法来 Package 这些Optional
到一条小溪,然后找到第一个礼物。我们需要一个退路
@SafeVarargs
为了抑制警告,这是无法避免的,根据是否有可能解决“为varargs参数创建t的泛型数组”编译器警告?