为什么哈希映射不能是静态的?

时间:2011-01-11 13:46:45

标签: java data-structures collections

为什么这种语法不合法..?你能否解释一下设计问题是什么,不允许HashMap像这样的声明是静态的。

static HashMap<String,  String> map2 = new HashMap<String,  String> ();

4 个答案:

答案 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> ();