将ifPresent与orElseThrow一起使用

时间:2019-06-13 04:42:35

标签: java optional

所以我必须缺少一些东西,如果要使用Optional,我希望执行一个语句块,否则会引发异常。

Optional<X> oX;

oX.ifPresent(x -> System.out.println("hellow world") )
.orElseThrow(new RuntimeException("x is null");

如果oX不为null,则打印hello world。 如果oXnull,则抛出运行时异常。

2 个答案:

答案 0 :(得分:6)

只需直接消耗您的元素即可。

X x = oX.orElseThrow(new RuntimeException("x is null");
System.out.println(x);

System.out.println(oX.orElseThrow(new RuntimeException("x is null"));

答案 1 :(得分:1)

对于Java-8,您可以做的是将if...else用作:

if(oX.ifPresent()) {
    System.out.println("hello world");  // ofcourse get the value and use it as well
} else { 
   throw new RuntimeException("x is null");
}

在Java-9及更高版本中,您可以使用ifPresentOrElse

optional.ifPresentOrElse(s -> System.out.println("hello world"), 
        () -> {throw new RuntimeException("x is null");});