它是方便的声明函数映射值和消费它们,如果它们存在。
在你有几个强制对象和几个可选的情况下,我发现自己包装在Optional.of(mandatoryObject)中的其他人,所以我可以使用相同的表达式,而不必向后写。
Food vegetables = Food.someVegetables();
Optional condiment = Food.someCondiment();
Optional spices = Food.someSpices();
condiment.map(prepare).ifPresent(putOnPlate);
spices.map(prepare).ifPresent(putOnPlate);
但是后来我不喜欢这个代码:
putOnPlate.accept(prepare.apply(vegetables));
所以我包装它:
Optional.of(vegetables).map(prepare).ifPresent(putOnPlate);
但这是错误的,因为蔬菜(在这个例子中)事实上不是可选的。他们非常重要,我只是给大家的印象是他们是可选的。
所以我的问题是:在java中有一些类,如java.util.Mandatory所以我可以写:
Mandatory.of(vegetables).map(prepare).definitelyPresentSo(putOnPlate);