Это ошибка в программном обеспечении IntelliJ (16, 144.3357.4), и мне интересно, как временно обходить его, пока я жду исправления. Для соображений обратной совместимости я создаю кросс-платформенное приложение, которое использует retrolambda и API потоков annimon. Однако эта ошибка возникает, если я переключусь на Java 1.8+ и удаляю эти пакеты.Обход ложных ошибок IntelliJ с Stream.of
Я больше не могу использовать Stream.of (... некоторые Iterable ...), не получая много ложных ошибок такого рода:
Both:
List<? extends T> in Stream and
Iterable<? extends T> in Stream match
Я могу подтвердить, я только когда-либо импортировать annimon Стрим-классы --- нет смешанного импорта из 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
@ChiefTwoPencils Добавлено. – EntangledLoops
Я, супруг, это EAP; правильно? Это может быть сильной возможностью. Возможно, вы сможете получить отчет о ходе работы на сайте JetBrains. – ChiefTwoPencils