获取Intellij Idea以突出显示不兼容的编译器代码?

时间:2015-10-29 14:56:36

标签: java eclipse intellij-idea intellij-14

所以我们遇到了javac可以编译除了eclipse can't之外的问题。这可能是javac错误,但我怀疑考虑到initial jdk bug报告已经存在多长时间,双方都无法解决问题。

  

错误是:GenericsEclipseCompilerIssue.CollectionToString类型中的方法apply(Collection)不适用于参数(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强调这一点,以便我不小心引入这个问题?

1 个答案:

答案 0 :(得分:3)

在这种情况下,像罗马人那样做更有意义。由于每个人都在使用Eclipse编译器,因此您也应该(至少在该策略决定更改之前)。

为此,请在“设置”下执行;构建,执行和部署&gt;编译器&gt; Java编译器,将设置从Javac切换到Eclipse。现在,IntelliJ将使用Eclipse编译器来构建代码。