相关疑难解决方法(0)

带有钻石操作符的双括号初始化(匿名内部类)

我想知道为什么第二个地图声明(使用菱形运算符)在第一个地图声明时不会编译.编译错误:

错误:无法推断HashMap的类型参数; Map map2 = new HashMap <>(){reason:不能使用带有匿名内部类的'<>',其中K,V是类型变量:K扩展在类HashMap中声明的对象V扩展在类HashMap中声明的Object

码:

    Map<String, String> map1 = new HashMap<String, String>() { //compiles fine

        {
            put("abc", "abc");
        }
    };

    Map<String, String> map2 = new HashMap<>() { //does not compile

        {
            put("abc", "abc");
        }
    };
Run Code Online (Sandbox Code Playgroud)

编辑
感谢您的回答 - 我应该更好地阅读编译错误.我在JLS找到了这个项目

如果类实例创建表达式使用类的"<>"形式为类的类型参数声明一个匿名类,那么这是一个编译时错误.

java generics java-7

11
推荐指数
2
解决办法
2734
查看次数

标签 统计

generics ×1

java ×1

java-7 ×1