gpt4 book ai didi

java - Groovy 应用程序中 RxJava fromCallable() 方法的 IntelliJ 编译错误?

转载 作者:行者123 更新时间:2023-12-02 12:02:55 31 4
gpt4 key购买 nike

我正在开发一个使用 RxJava 1.0 的 Spring Boot 应用程序,并且我正在使用 Groovy 编程语言使用 IntelliJ IDE 构建它。我似乎无法让它接受我的 Observable.fromCallable() 调用语法,如下所示。我使用的语法与我在 fromCallable() 方法的示例中看到的语法完全相同,尽管是来自 Java 示例而不是 Groovy,因为我似乎找不到任何 Groovy 示例。这是我的代码:

.doOnNext
{
// Emit an observable that waits for the call in the closure passed to fromCallable().
Observable.fromCallable( () -> { httpCallThatReturnsAnObservable() })
}

我在匿名方法头部的右括号 ")" 之后和正文之前的 ">" 字符之后的光标位置处收到错误关闭,在我在下面一行中放置下划线的位置:

()_->_ { }

第一个错误是:

Expression expected. ')' or ',' expected.

第二个错误是:

')' or ',' expected.

注意,httpCallThatReturnsAnObservable() 返回一个 Observable。

我使用 fromCallable() 是因为我读到的一篇博客文章表明它是使用的首选方法,而不是使用 defer() 方法或使用可阻塞的可观察的。我的一位同事还警告我,除了 Spring Boot 应用程序内的 Controller 之外,不要在任何其他内容中使用 defer(),并且当前代码不是 Controller 的一部分.

有人能给我使用 Groovy 的 fromCallable() 的正确语法吗?

最佳答案

您的 IDE(和 Groovy 编译器)理所当然地提示该语法。这是一个 java8amba 表达式,Groovy 无法理解。

您必须使用 Groovy 闭包,或者使用与 Java 相同的匿名类(例如,像之前的 8 一样)。

例如此处使用 { -> ... } 而不是 () -> {...} 。这给你一个没有参数的闭包。 Groovy 会做正确的事情并将其“转换”到该单一方法接口(interface),然后您就完成了。

基本经验法则:将 lambda 的参数((...) 中的内容;在您的情况下什么都没有)和 -> 移动到 {} 并删除 ()

关于java - Groovy 应用程序中 RxJava fromCallable() 方法的 IntelliJ 编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47116467/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com