如何修复在类之外定义Map时出现的“class,interface或enum expected” 错误?

8 浏览
0 Comments

如何修复在类之外定义Map时出现的“class,interface或enum expected” 错误?

这个问题已经有答案了

如何初始化一个静态映射?

为了我的自定义Logger类,我想要定义一个映射来将优先级数字映射回类似下面的有意义的字符串:

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");

我想知道是否有自动执行此操作的函数?但我不知道有什么函数。

然而,当我定义在我的类定义之前的行时,就会出现以下错误:

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

我不确定它的含义(也许我不能在类外面声明变量?)。我还尝试在类内部定义映射,但是put方法无法解析。我还注意到,我没有导入Map模块,并且Android Studio似乎不需要Map模块(即名称“Map”没有被红色下划线标记)。

我很困惑(像往常一样);我只想在优先级值为6时获得一个字符串“ERROR”等等。

在我这种情况下,我做错了什么...?

admin 更改状态以发布 2023年5月24日
0
0 Comments

也许我不能在类外部声明变量?

正确。

使用:

class Foo {
  static Map 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
}

我还注意到,我没有导入Map模块,而Android Studio似乎并不需要Map模块(即名称“Map”没有显示为红色下划线)。

这是因为Android Studio不知道该怎么处理那段代码。一旦将它们移到类中,Android Studio将意识到您正在尝试使用MapHashMap,并会要求您导入它们。

0