关于Java:如何在类外定义Map时修复错误:“class,interface或enum expected”?

How to fix error: “class, interface, or enum expected” when defining a Map outside of a class?

本问题已经有最佳答案,请猛点这里访问。

对于我自己的Logger类,我想定义一个映射,将优先级编号映射回一个有意义的字符串,如下所示:

1
2
3
4
5
6
static Map<int, String> map = new HashMap<int, String>();
map.put(2,"VERBOSE");
map.put(3,"DEBUG");
map.put(4,"INFO");
map.put(5,"WARN");
map.put(6,"ERROR");

我想知道是否有一个函数可以自动执行这个操作?但我现在知道它的每一个功能。

但是,我在类定义之前定义了行,然后得到了错误:

1
Error:(14, 8) error: class, interface, or enum expected

不确定它的含义(也许我不能在类之外声明变量?).I还试图在类内定义映射,但无法解析put方法。我还注意到,我没有导入Map模块,androidstudio似乎不需要Map模块(即名称'map'不是红色和下划线)。

我很困惑(和往常一样);我只想得到一个字符串"错误",如果优先级值是6等等。

在我的情况下我做错了什么…?


maybe I cannot declare variables outside a class?

对的。

用途:

1
2
3
4
5
6
7
8
9
10
11
12
13
class Foo {
  static Map<Integer, String> PRIORITY_LABELS = new HashMap<>();

  static {
    PRIORITY_LABELS.put(2,"VERBOSE");
    PRIORITY_LABELS.put(3,"DEBUG");
    PRIORITY_LABELS.put(4,"INFO");
    PRIORITY_LABELS.put(5,"WARN");
    PRIORITY_LABELS.put(6,"ERROR");
  }

  // rest of class goes here
}

I also notice, that I have not imported a Map module, and AndroidStudio does not seem to require a Map module (i.e. the name 'Map' is not red and underlined).

这是因为Android Studio不知道如何处理这些代码。一旦你把它们放到课堂上,Android Studio就会意识到你正在尝试使用MapHashMap,并要求你导入它们。