java - IntelliJ 看不到错误,但编译器在使用 RX 和 lambda 时看到错误?

标签 java intellij-idea lambda

您好,我有以下代码...

Flowable.fromIterable(records.records())
    .flatMap(record -> {
        return consume(record);
    })
    .doOnError(t -> t.printStackTrace()) <--- Compiler complains about this
    .onErrorResumeNext(Flowable.empty())
    .doOnTerminate(() -> {
        ...
    }).subscribe();

还有……

public abstract Flowable consume(ConsumerRecord<String, String> record);

有了上面的 IntelliJ 不会提示任何错误。但是在我构建代码的那一刻,我得到...

Error:(71, 50) java: cannot find symbol
    symbol:   method printStackTrace()
    location: variable t of type java.lang.Object

如果我把...

public abstract Flowable<?> consume(ConsumerRecord<String, String> record);

然后它构建并运行良好。所以我猜类型信息不知何故丢失了?

更新 该应用程序通过 Intellij 中的 Gradle 运行任务运行。并澄清 IntelliJ 编辑器/自动完成并不认为这是一个错误。

最佳答案

根据上面的评论。需要从 IntelliJ 2017 升级到至少 2018/2019。现在编辑认为这是一个错误。

关于java - IntelliJ 看不到错误,但编译器在使用 RX 和 lambda 时看到错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54813418/

相关文章:

c# - 如何从带有列表的对象列表创建列表

Java 进程使用的 RAM 多于分配的 RAM?

java - 如果 PrintWriter.print 和 PrintWriter.println 之间有区别怎么办?

java - 使用单例模式的 jax-ws 客户端

groovy - IntelliJ 和 Groovy 测试源消失

c# - GC 何时可以收集挂接到事件的 Lambda?

java - for循环在JAVA中使用lambda表达式

java - 即使哈希表的大小增加了,get(key) 又如何工作!

android - 当代码需要特定的 API 级别时,为什么对 Build.Version 的检查必须是相同的要求而不是达到或高于要求的级别?

scala - Spark/Scala - 项目从 IntelliJ 运行良好,但在 SBT 时引发错误