我一直在使用新的Optional type in Java 8,并在功能上支持我've come across what seems like a common operation that isn':"orElseOptional"
考虑以下模式:
Optional resultFromServiceA = serviceA(args);
if (resultFromServiceA.isPresent) return result;
else {
Optional resultFromServiceB = serviceB(args);
if (resultFromServiceB.isPresent) return resultFromServiceB;
else return serviceC(args);
}
这种模式有很多种形式,但归结为在一个可选项上需要一个“orElse”,它接受一个生成一个新的可选项的函数,仅当当前的一个不存在时才被调用 .
它的实现看起来像这样:
public Optional orElse(Supplier> otherSupplier) {
return value != null ? this : other.get();
}
我很好奇是否有这样的方法不存在的原因,如果我只是以一种无意的方式使用Optional,以及人们提出了处理这种情况的其他方式 .
我应该说,我认为涉及自定义实用程序类/方法的解决方案并不优雅,因为使用我的代码的人不一定知道它们存在 .
另外,如果有人知道,这样的方法是否会包含在JDK 9中,我可以在哪里提出这样的方法?对我来说,这似乎是对API的一个相当明显的遗漏 .