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")
);
}
}