Что означает «множественные маркеры»? - PullRequest
6 голосов
/ 14 февраля 2011

Я пытаюсь использовать наборы следующим образом:

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)

Я не могу понять, что я делаю неправильно. Кто-нибудь может мне помочь?

Ответы [ 3 ]

12 голосов
/ 14 февраля 2011

«Несколько маркеров» просто означает, что «с этой строкой не все в порядке».

Но основная проблема заключается в том, что вы пытаетесь вставить операторы непосредственно в класс, а не в конструктор, метод, инициализатор и т. Д.

Я предлагаю вам изменить код на что-то вроде этого:

static Set<String> languages = getDefaultLanguages();

private static Set<String> getDefaultLanguages()
{
    Set<String> ret = new HashSet<String>();
    ret.add("en");
    ret.add("de");
    return ret;
}
4 голосов
/ 06 мая 2014

Это означает, что в одной строке вы получаете несколько ошибок.

Рисунок ниже описывает лучшее.Обратитесь к @Jon Skeet, чтобы узнать, как устранить эти ошибки.

enter image description here.

4 голосов
/ 14 февраля 2011

Вы делаете что-то незаконное:

Либо это (если ваш код на уровне класса):

// 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");
}
...