6

我正在尝试通过以下方式使用集合:

static Set<String> languages = new HashSet<String>();
languages.add("en");
languages.add("de");

我收到 Eclipse 生成的以下错误消息:

> Multiple markers at this line
>   - Syntax error on token ""en"", delete this      token
>   - Syntax error on token(s), misplaced    construct(s)

我无法弄清楚我做错了什么。有人可以帮我吗?

4

3 回答 3

14

“多个标记”只是意味着“这条线不止一件事有问题”。

但基本问题是您试图将语句直接插入到类中,而不是将它们放在构造函数、方法、初始化程序等中。

我建议您将代码更改为以下内容:

static Set<String> languages = getDefaultLanguages();

private static Set<String> getDefaultLanguages()
{
    Set<String> ret = new HashSet<String>();
    ret.add("en");
    ret.add("de");
    return ret;
}
于 2011-02-14T11:12:39.973 回答
4

这意味着在一行中您会遇到多个错误。

下面的图片描述了最好的。请参阅@Jon Skeet 以了解如何解决这些错误。

在此处输入图像描述.

于 2014-05-06T14:44:46.963 回答
4

你在做违法的事情:

要么这个(如果你的代码在类级别):

// field definition on class level
static Set<String> languages = new HashSet<String>();
// statements are not allowed here, the following lines are illegal:
languages.add("en");
languages.add("de");

或这个:

private void foo(){
    // static keyword not legal inside methods
    static Set<String> languages = new HashSet<String>();
    languages.add("en");
    languages.add("de");

}

相反,您可以使用静态初始化程序来初始化您的集合:

static Set<String> languages = new HashSet<String>();
static{
  languages.add("en");
  languages.add("de");
}
于 2011-02-14T11:14:17.647 回答