web-dev-qa-db-ja.com

「複数のマーカー」とはどういう意味ですか?

私は次のようにセットを使おうとしています:

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)

何が間違っているのか理解できません。誰か助けてくれませんか?

6
Roman

「複数のマーカー」とは、「この行に複数の問題がある」という意味です。

ただし、基本的な問題は、ステートメントをコンストラクター、メソッド、初期化子などに含めるのではなく、クラスに直接挿入しようとしていることです。

コードを次のように変更することをお勧めします。

static Set<String> languages = getDefaultLanguages();

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

あなたは違法なことをしています:

これのいずれか(コードがクラスレベルの場合):

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

これは、1行で複数のエラーが発生することを意味します。

下の写真は最高のものを説明しています。これらのエラーを解決する方法については、@ JonSkeetを参照してください。

enter image description here

4
Chandrayya G K