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 .)
我遇到了一个简单的问题:我有一个 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 .)