小编Lar*_*sen的帖子

是否有类可选但非选项类?

声明函数来映射值并在它们存在时使用它们是很方便的.

在你有几个强制对象和几个Optionals的情况下,我发现自己将其他包装在Optional.of(mandatoryObject)中,所以我可以在它们上使用相同的表达式而不用向后写它们.

Food vegetables = Food.someVegetables();
Optional<Food> condiment = Food.someCondiment();
Optional<Food> spices = Food.someSpices();

condiment.map(prepare).ifPresent(putOnPlate);
spices.map(prepare).ifPresent(putOnPlate);
Run Code Online (Sandbox Code Playgroud)

但后来我不喜欢这段代码:

putOnPlate.accept(prepare.apply(vegetables));
Run Code Online (Sandbox Code Playgroud)

所以我把它包起来:

Optional.of(vegetables).map(prepare).ifPresent(putOnPlate);
Run Code Online (Sandbox Code Playgroud)

但这是错误的,因为蔬菜(在这个例子中)实际上不是可选的.它们非常重要,我给大家的印象是它们是可选的.

所以我的问题是:java中有一些类如java.util.Mandatory,所以我可以写:

Mandatory.of(vegetables).map(prepare).definitelyPresentSo(putOnPlate);
Run Code Online (Sandbox Code Playgroud)

java optional java-8

42
推荐指数
2
解决办法
1891
查看次数

标签 统计

java ×1

java-8 ×1

optional ×1