我试过下面这行:
Map<Character, Color> map={new Character('r'):Color.red,new Character('b'):Color.black};
但NetBeans7拒绝了这一请求,错误消息为'{' expected, ';' expected
。
我已经将源代码/二进制格式设置为'JDK 7‘,平台设置为'JDK 1.7',还有什么需要我做的吗?
发布于 2012-05-23 00:03:57
您需要定义一个具体的map实现,可以选择与双花括号初始化相结合:
Map<Character, Color> map = new HashMap<Character, Color>() {{
put(new Character('r'), Color.red);
put(new Character('b'), Color.black );
}};
发布于 2012-05-23 00:29:58
在托马斯的回答上稍微扩展一下...Map是一个接口,必须通过相关的具体实现之一(HashMap、TreeMap或LinkedHashMap)进行实例化。这仍然是一个很好的实践;但是,将引用变量声明为接口实现而不是具体的具体变量,因为它提供了未来的灵活性。
不过,关于代码片段,我认为您仍然需要在声明的赋值端定义键-值对。所以,我会改变:
Map<Character, Color> map = new HashMap<>() {{
至
Map<Character, Color> map = new HashMap<Character, Color>() {{
https://stackoverflow.com/questions/10705705
复制相似问题