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

What is the right syntax for Optional.orElseThrow in 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是我自定义的名字class):

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

请帮忙!

试试这样的东西:

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

请参阅有关 lambda expressions 的文档。

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