如何防止IntelliJ在Java 8流表达式中生成多余的强制转换?

时间:2019-06-27 09:50:03

标签: java intellij-idea java-stream

通常当我在IntelliJ(版本2019.1.3社区版)中键入Java 8流代码并使用自动补全功能时,IntelliJ会在结果代码中生成多余的转换。

一个人为的最小示例如下:

类型:

List<? extends List<? extends Future<?>>> list = new ArrayList<>();
list.stream().map(l -> l.stream().map(f -> f.isD

,光标放在D的大写f.isD之后。 IntelliJ现在建议我完成f.isDf.isDone()。当我接受并按回车键时,将生成以下内容:

list.stream().map(l -> l.stream().map(f -> ((Future) f).isDone()));

为什么IntelliJ将f强制转换为Future?这是多余的,IntelliJ立即检测到该错误,即抱怨(即警告)该冗余演员表。

我在网上搜索了一些设置以将其关闭或以某种方式更正此自动完成功能,但是找不到任何解决方案。请帮助,这使我发疯!

1 个答案:

答案 0 :(得分:0)

事实证明这是 IntelliJ 中的一个错误,该错误已在最新版本 (https://youtrack.jetbrains.com/issue/IDEA-221376) 中得到修复。