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

标签 exception option-type 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 ')'

请帮忙!

最佳答案

尝试如下:

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/

相关文章:

java - 我应该如何使用Optional 和ifPresent(...) 重构代码以...不?

java - Xtend 语法澄清

c++ - 未捕获的 std::exception 在核心中不正确的堆栈跟踪

c++ - 在 catch block 中抛出异常时打印回溯

java - Selenium WebDriver findelement 卡住了 java?

java - 如何正确使用Optional和 `@RequestBody`?

c++ - C3867 : '_com_error::Description' : non-standard syntax; use '&' to create a pointer to member

Java Stream 映射到多个属性

java - 使用 xtext-xbase-xtend 工具链创建简单的特定于领域的语言

xtext - 如何实现xText的代沟模式?