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

Constructor reference incorrecty marked as error in IntelliJ 2017.1.4

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


Java版本:1.8.0_131

IntelliJ IDEA 版本:2017.1.4

我有这个class:

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> 泛型类型,您可以显式设置 K, V 类型用于解决此警告,例如:

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