Xtend中Optional.orElseThrow的正确语法是什么?

时间:2016-10-13 16:01:02

标签: exception optional xtend

我遇到了一个简单的问题:我有一个java.util.Optional并且想要使用orElseThrow方法在值不存在时抛出异常。但是我无法在Xtend中找到正确的语法。在Java中,我会这样做:

Optional<String> host = ... // get from some method
host.orElseThrow(() -> new IllegalArgumentException("Host is not provided"));

但这不能在Xtend中编译。 Eclipse中的错误消息是这样的(其中MyClass是我的自定义类的名称):

Multiple markers at this line
- Type mismatch: cannot convert from Pair<MyClass, IllegalArgumentException> to Supplier<? extends Throwable>
- no viable alternative at input ')'

请帮忙!

1 个答案:

答案 0 :(得分:3)

尝试类似:

val Optional<String> host = ... // get from some method
host.orElseThrow[new IllegalArgumentException("Host is not provided")]

请参阅有关lambda expressions的文档。

->是Xtend中的运算符,但它与lambda表达式无关。请参阅有关operators的文档并搜索 Pair运算符。)