java中present_Java 9中Optional.ifPresentOrElse()和Optional.or()方法之间的区别?

无论Optional.ifPresentOrElse()和Optional.or()方法在Java的版本9中引入了以改善其功能。该Optional.ifPresentOrElse()方法检查值存在,适用行动值,否则返回空的动作,而Optional.or()方法检查值存在,返回选项包含的值,否则返回可选适用于供应商功能可按。 Optional.ifPresentOrElse()方法包含两个参数,消费者和可运行而Optional.or()方法仅包含一个参数,供应商。

Optional.ifPresentOrElse()的语法:public void ifPresentOrElse(Consumer super T> action, Runnable emptyAction)

示例import java.util.Optional;

import java.util.concurrent.atomic.AtomicInteger;

public class IfPresentOrElseMethodTest {

public static void main(String args[]) {

optionalIsPresent();

optionalIsEmpty();

}

private static void optionalIsPresent() {

Optional optional = Optional.of("Test");

AtomicInteger successCounter = new AtomicInteger();

AtomicInteger emptyOptionalsCounter = new AtomicInteger();

optional.ifPresentOrElse(x -> successCounter.incrementAndGet(), () ->       emptyOptionalsCounter.incrementAndGet());

System.out.println(successCounter.get());

System.out.println(emptyOptionalsCounter.get());

}

private static void optionalIsEmpty() {

Optional optional = Optional.empty();

AtomicInteger successCounter = new AtomicInteger();

AtomicInteger emptyOptionalsCounter = new AtomicInteger();

optional.ifPresentOrElse(x -> successCounter.incrementAndGet(), () -> emptyOptionalsCounter.incrementAndGet());

System.out.println(successCounter.get());

System.out.println(emptyOptionalsCounter.get())

}

}

输出结果1

0

0

1

Optional.or()的语法:public Optional or(Supplier extends Optional extends T>> supplier)

示例import java.util.Optional;

public class OptionalOrMethodTest {

public static void main(String args[]) {

optionalIsPresent();

optionalIsEmpty();

}

private static void optionalIsPresent() {

Optional optional1 = Optional.of("Test1");

Optional optional2 = Optional.of("Test2");

Optional optional3 = optional1.or(() -> optional2);

System.out.println(optional3.get());

}

private static void optionalIsEmpty() {

Optional optional1 = Optional.empty();

Optional optional2 = Optional.of("Test2");

Optional optional3 = optional1.or(() -> optional2);

System.out.println(optional3.get());

}

}

输出结果Test1

Test2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值