【发布时间】:2015-10-29 14:56:35
【问题描述】:
所以我们遇到了一个问题,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 突出显示这一点,以免我不小心引入这个问题?
【问题讨论】:
-
您是否选择在日常工作中切换到 Eclipse 编译器?
-
@Makoto 我团队的其他成员正在使用 eclipse,事实上我是唯一一个不使用的人。我们可以争辩说我应该这样做,但是,我个人觉得这无法忍受。
-
在 IntelliJ 中不使用 Eclipse 编译器是否有特定原因?我不会说你应该使用 Eclipse,但你可以使用它的编译器......
-
@Makoto 我不知道这是可能的,我想一般来说(这可能是为什么)我也不知道你为什么会......如果你想提供可能是一个解决方案一个解释这一点的答案,以及如何。
标签: java eclipse intellij-idea intellij-14