【发布时间】:2016-05-13 01:00:17
【问题描述】:
这是 IntelliJ (16, 144.3357.4) 软件中的一个错误,我想知道如何在等待修复时暂时绕过它。出于向后兼容性的原因,我正在构建一个使用retrolambda 和annimon 流API 的跨平台应用程序。但是,如果我切换到 Java 1.8+ 并删除这些包,就会产生这个错误。
我不能再使用 Stream.of(...some 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,所以它无法决定我想要哪种方法。
有没有办法在不进行类型转换的情况下解决或抑制这些错误?
我知道我可以降级到早期版本,但我想知道是否有更简单的修复方法。
【问题讨论】:
-
您使用的是什么版本的 Intellij?
-
已添加@ChiefTwoPencils。
-
我认为这是一个 EAP;正确的?这可能是一个很大的可能性。您也许可以在 JetBrains 网站上获得进度报告。
-
是的,我搜索过,但没有运气。
标签: java intellij-idea java-stream