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

标签 java intellij-idea constructor java-8 method-reference

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

<小时/>

Java版本:1.8.0_131

IntelliJ IDEA版本: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> 造成的泛型类型,可以显式设置K , V输入解决此警告的方法,例如:

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

关于java - 构造函数引用不正确在 IntelliJ 2017.1.4 中标记为错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44877355/

相关文章:

c++ - 在类构造函数中初始化自定义结构对象的正确方法

c++ - 如何避免在 C++ 的派生类中重复基类构造函数参数?

c++ - 如何使用在构造函数中创建的对象

java - 让 JButton 将 JTextField 中的文本插入到变量中?

java - 发生 MQException : Completion Code 2, 原因 2400 MQJE011:套接字连接尝试被拒绝

java - 实现被测类的某些方法后生成新的 JUnit 测试

intellij-idea - 禁用 Intellij 自动复制到剪贴板

java - 如何以编程方式从另一个程序中关闭在 Windows 中运行的特定 Java 应用程序?

java - 如何同时显示谷歌地图中的所有标记标签?

android - 从intellij 12导入项目到android studio beta