我遇到了一个简单的问题:我有一个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 ')'
请帮忙!
答案 0 :(得分:3)
尝试类似:
val Optional<String> host = ... // get from some method
host.orElseThrow[new IllegalArgumentException("Host is not provided")]
请参阅有关lambda expressions的文档。
(->
是Xtend中的运算符,但它与lambda表达式无关。请参阅有关operators的文档并搜索 Pair运算符。)