我遇到了一个简单的问题:我有一个 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 ')'
请帮忙!
最佳答案
尝试如下:
val Optional<String> host = ... // get from some method
host.orElseThrow[new IllegalArgumentException("Host is not provided")]
请参阅有关 lambda expressions 的文档.
(->
是 Xtend 中的运算符,但它与 lambda 表达式无关。请参阅有关 operators 的文档并搜索配对运算符。)
关于exception - Xtend 中Optional.orElseThrow 的正确语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40025817/