public class Optionals extends Object
| 限定符和类型 | 类和说明 |
|---|---|
static class |
Optionals.Fors |
static class |
Optionals.OptionalConsumer<T> |
| 构造器和说明 |
|---|
Optionals() |
| 限定符和类型 | 方法和说明 |
|---|---|
static <T> Optionals.OptionalConsumer<T> |
ifPresentOrElse(java.util.function.Consumer<T> c,
Runnable r)
在java8中,
Optional 只有 Optional.ifPresent(Consumer) 和 Optional.orElseGet(Supplier),
其中 Optional.orElseGet(Supplier) 必须要有返回值,必要的时候只能返回 Void 类型,不够优雅且冗余。 |
public static <T> Optionals.OptionalConsumer<T> ifPresentOrElse(java.util.function.Consumer<T> c, Runnable r)
Optional 只有 Optional.ifPresent(Consumer) 和 Optional.orElseGet(Supplier),
其中 Optional.orElseGet(Supplier) 必须要有返回值,必要的时候只能返回 Void 类型,不够优雅且冗余。
java8中在不需要返回值的情况下,缺少同时对Optional 中有值和没值2种情况的处理的方法,所以定义了这个方法,
如果2种情况都需要处理,同时定义更加符合函数式编程的风格。
不建议使用了。可以用如下代码实现相同功能
Optional.of("")
.<Runnable>map(x -> () -> {
// exist value do something
})
.orElse(() -> {
// no value do something
})
.run();
See also: 可以使用 Functional.runnable(Consumer) 转换Consumer到Runnable
Copyright © 2021. All rights reserved.