所以我必须缺少一些东西,如果要使用Optional,我希望执行一个语句块,否则会引发异常。
Optional<X> oX;
oX.ifPresent(x -> System.out.println("hellow world") )
.orElseThrow(new RuntimeException("x is null");
如果oX
不为null,则打印hello world。
如果oX
是null
,则抛出运行时异常。
答案 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");});