首页 Java Java 使用lambda表达式代替实现'if else'

Java 使用lambda表达式代替实现'if else'

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
}
>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);
}
}
>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"));
特别声明:本站部分内容收集于互联网是出于更直观传递信息的目的。该内容版权归原作者所有,并不代表本站赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请及时与824310991@qq.com联系,我们会及时反馈并处理完毕。