使用Stream.of绕过IntelliJ错误

时间:2016-02-03 17:25:35

标签: java intellij-idea java-stream

这是IntelliJ(16,144.3357.4)软件中的一个错误,我想知道如何在等待修复时暂时绕过它。出于向后兼容性原因,我正在构建一个使用retrolambdaannimon流API的跨平台应用。但是,如果我切换到Java 1.8+并删除这些包,就会产生这个错误。

我不能再使用Stream.of (...一些Iterable ......)而不会收到很多此类错误错误:

Both:
List<? extends T> in Stream and
Iterable<? extends T> in Stream match

我可以确认我只是导入了annimon Stream类 - 没有来自Java API的混合导入,当我切换到Java 1.8+时也是如此。如果我通过字节码反编译进入源代码,我确实看到了具有(可能)相同擦除的方法:

public static <T> Stream<T> of(final List<? extends T> list)
public static <T> Stream<T> of(Iterable<? extends T> iterable)

转换我的对象可以解决错误,但会导致无法解析的代码和对Stream.of的冗长调用。我还应该注意到自最新版本以来这只是一个问题。显然,问题是List也实现了Iterable,所以它无法决定我想要的方法。

有没有办法在没有类型转换的情况下解决或抑制这些错误?

我意识到我可以降级到早期版本,但我想知道是否有更简单的修复。

2 个答案:

答案 0 :(得分:0)

今天早上推出的更​​新已解决此问题:
IntelliJ IDEA(社区版)IC-144.3600.7
构建#IC-144.3600,建于2016年2月2日

答案 1 :(得分:0)

如果错误仅显示在编辑器中,而不是在生成项目时在消息工具窗口中显示,则可以忽略它,您的项目仍将构建并运行。