What does the “Multiple markers” mean?

2019-01-15 14:59发布

问题:

I am trying to use sets in the following way:

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

And I get the following error message generated by Eclipse:

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

I cannot figure out what I am doing wrong. Can anybody please help me?

回答1:

"Multiple markers" just means "there's more than one thing wrong with this line".

But the basic problem is that you're trying to insert statements directly into a class, rather than having them in a constructor, method, initializer etc.

I suggest you change your code to something like this:

static Set<String> languages = getDefaultLanguages();

private static Set<String> getDefaultLanguages()
{
    Set<String> ret = new HashSet<String>();
    ret.add("en");
    ret.add("de");
    return ret;
}


回答2:

You are doing something illegal:

Either this (if your code is at class level):

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

or this:

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

}

Instead, you could use a static initializer to initialize your set:

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


回答3:

This means on a single line you are getting multiple errors.

The pic below describes the best. Refer @Jon Skeet to know how to resolve these errors.

.