为什么这种语法不合法..?你能否解释一下设计问题是什么,不允许HashMap像这样的声明是静态的。
static HashMap<String, String> map2 = new HashMap<String, String> ();
答案 0 :(得分:11)
该声明本身就完全合法。我可以想到你会收到错误的两个原因:
java.util.HashMap
(当然,在这种情况下,错误与您使用static
关键字无关。)答案 1 :(得分:7)
static HashMap<String, String> map2 = new HashMap<String, String> ();
如果您在类级别而不是方法中拥有此代码,则完全有效。
你在哪里?
更新后:
您在方法级别声明了变量,在方法级别不允许使用静态变量。
static
个变量是 class 变量。每班一个。因此,只有在方法内部可见的变量(在方法完成后将 die )变为“类级别”是没有意义的。至少Java是如何看待它的。
答案 2 :(得分:0)
您对HashMap
的声明是完全正确的,也许您正在尝试从非静态上下文/方法中使用它?
答案 3 :(得分:0)
我们可以将java中的任何集合声明为static.So你的声明中没有任何错误。
static HashMap<String, String> map2 = new HashMap<String, String> ();