2015-10-29 2 views
1

Итак, у нас возникла проблема, когда javac может скомпилировать что-то, но eclipse can't. Это может быть ошибка javac, но я подозреваю, что ни одна из сторон не решит проблему, учитывая, как долго был отчет initial jdk bug.Получите Intellij Idea, чтобы выделить несовместимый код компилятора?

Ошибка: Метод применим (Collection) в типе GenericsEclipseCompilerIssue.CollectionToString не применяется для аргументов (Collection)

import java.util.Collection; 
import java.util.Collections; 
import java.util.List; 
import java.util.Objects; 
import java.util.Optional; 
import java.util.function.Function; 
import java.util.stream.Collectors; 

public class GenericsEclipseCompilerIssue 
{ 

    public static <T> Function<Optional<Collection<T>>, String> optionalCollectionToString(
     final Function<? super T, String> elementTransformer) { 
     return (collection) -> { 
      return new CollectionToString<>(elementTransformer) 
       .apply(collection.orElse(Collections.emptyList())); 
     }; 
    } 

    static class CollectionToString<E> implements Function<Collection<E>, String> { 

     private final Function<? super E, String> elementTransformer; 

     public CollectionToString(final Function<? super E, String> elementTransformer) 
     { 
      this.elementTransformer = elementTransformer; 
     } 

     @Override 
     public String apply(final Collection<E> collection) 
     { 
      List<String> strings = collection.stream() 
       .filter(Objects::nonNull) 
       .map(elementTransformer::apply) 
       .sorted(String.CASE_INSENSITIVE_ORDER) 
       .collect(Collectors.toList()); 

      return strings.toString(); 
     } 
    } 
} 

Есть ли способ, чтобы получить IntelliJ IDEA, чтобы подчеркнуть это так что я не случайно представляю эту проблему?

+0

Вы решили переключиться на компилятор Eclipse в своей обычной повседневной рутине? – Makoto

+0

@Makoto другие члены моей команды используют eclipse, на самом деле я единственный, кто этого не делает. Мы могли бы утверждать, что должны, но, я лично считаю это невыносимым. – xenoterracide

+0

Есть ли конкретная причина, по которой вы не используете компилятор Eclipse в IntelliJ? Я не собираюсь заходить так далеко, как утверждать, что вы должны использовать Eclipse, но вы можете использовать его компилятор ... – Makoto

ответ

3

В этом случае было бы разумнее делать то, что делают римляне. Поскольку каждый использует компилятор Eclipse, вы тоже должны быть (по крайней мере, пока эта политика не решит изменить).

Для этого в разделе «Настройки»> «Сборка, выполнение и развертывание»> «Компилятор»> «Компилятор Java» измените параметр с Javac на Eclipse. Теперь IntelliJ будет использовать компилятор Eclipse для создания вашего кода.

+0

, так что это достойный ответ, но я просто понял, что он сломал мой отладчик (не может видеть локальные переменные), что не является приемлемым компромиссом (и да, у меня есть возможность генерации информации отладки) – xenoterracide

Смежные вопросы