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中方法
import java.util.Optional; public class Main { public static void main(String[] args) { Elem defaultElem = new Elem("默认元素"); // 创建一个包含值的 Optional Optional<Elem> element = Optional.of(new Elem("实际元素")); // 使用 ifPresent 在值存在时执行某个操作 element.ifPresent(el -> System.out.println("存在: " + el)); // 使用 orElse 获取值(如果存在),如果不存在则返回一个默认值 System.out.println(element.orElse(defaultElem)); // 创建一个空的 Optional Optional<Elem> emptyElement = Optional.empty(); // 检查在空的 Optional 上的行为 emptyElement.ifPresent(el -> System.out.println("存在: " + el)); // 这行不会打印任何内容 System.out.println(emptyElement.orElse(defaultElem)); // 这行会打印默认元素 } } class Elem { private String name; public Elem(String name) { this.name = name; } @Override public String toString() { return name; } }
2)Java 9中方法
import java.util.Optional; public class Main { public static void main(String[] args) { // 创建一个包含值的 Optional Optional<String> optionalWithValue = Optional.of("Hello World"); // 使用 ifPresentOrElse 方法,如果值存在则打印 "Present: Hello World",否则打印 "Not present" optionalWithValue.ifPresentOrElse( el -> System.out.println("Present: " + el), () -> System.out.println("Not present") ); // 创建一个空的 Optional Optional<String> emptyOptional = Optional.empty(); // 使用 ifPresentOrElse 方法,如果值存在则打印 "Present: ...",否则打印 "Not present" emptyOptional.ifPresentOrElse( el -> System.out.println("Present: " + el), () -> System.out.println("Not present") ); } }