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

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

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

// 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 に答える