1、自己写代码实现
1)return this的实现
public MyClass ifExist(Consumer<Element> consumer) {
if (exist()) {
consumer.accept(this);
}
return this;
}
public MyClass ifNotExist(Consumer<Element> consumer) {
if (!exist()) {
consumer.accept(this);
}
return this;
}
调用方法:
element.ifExist(el -> {
//do something
})
.ifNotExist(el -> {
//do something else
});
2)返回中间类型的实现
interface Else<T>
{
public void otherwise(Consumer<T> consumer); // 'else' is a keyword
}
class DefaultElse<T> implements Else<T>
{
private final T item;
DefaultElse(final T item) { this.item = item; }
public void otherwise(Consumer<T> consumer)
{
consumer.accept(item);
}
}
class NoopElse<T> implements Else<T>
{
public void otherwise(Consumer<T> consumer) { }
}
public Else<MyClass> ifExist(Consumer<Element> consumer) {
if (exist()) {
consumer.accept(this);
return new NoopElse<>();
}
return new DefaultElse<>(this);
}
调用方法:
element.ifExist(el -> {
//do something
})
.otherwise(el -> {
//do something else
});
2、使用Java中方法实现
1)Java 8中方法
Optional<Elem> element = ...
element.ifPresent(el -> System.out.println("Present " + el);
System.out.println(element.orElse(DEFAULT_ELEM));
2)Java 9中方法
element.ifPresentOrElse(el -> System.out.println("Present " + el,
() -> System.out.println("Not present"));