构造函数引用不正确,在 IntelliJ 2017.1.4 中标记为错误



编辑:从IntelliJ版本2017.2开始,此问题已得到修复。


Java 版本:1.8.0_131

智能创意版本:2017.1.4

我有这个类:

public class MethodReferenceWithArguments {
static <T, U> T createWith(Function<? super U, ? extends T> methodRef, U arg) {
return methodRef.apply(arg);
}
public static void main(String[] args) {
Map<String, String> map = createWith(
TreeMap::new,
Comparator.<String>reverseOrder());
map.put("aaa", "ONE");
map.put("zzz", "TWO");
System.out.println(map);
}
}

使用 javac,它可以很好地编译并且工作正常。使用 IntelliJ,它可以很好地编译并且工作正常,但是TreeMap::new构造函数引用用红色下划线Bad return type in method reference: cannot convert java.util.TreeMap<K, V> to T并且消息显示在悬停工具提示上。

有谁知道如何在不关闭重要的相关错误消息的情况下禁用此误导性和烦人的错误消息?这是一个错误吗?如果是,我可以在哪里报告?

这是由Intellij无法推断TreeMap<K,V>泛型类型引起的,您可以显式设置KV类型来解决此警告,例如:

Map<String, String> map = createWith(
TreeMap<String, String>::new,
Comparator.<String>reverseOrder());

最新更新