2011-06-22 21 views
18

私はゲームに使用しているコントロールの情報を格納する内部クラスを持っていますが、今はコントロールのすべての名前を保持する静的ArrayListを格納します。しかし、私はこのエラーを取得しています:「修飾静的のみ一定の変数宣言では許可されている」修飾子staticは定数変数宣言でのみ使用可能

private class Control{ 
    public ArrayList<String> keys = new ArrayList<String>(); 
    public final String key; 
    public final Trigger trigger; 
    Control(String k, Trigger t){ 
     key = k; 
     trigger = t; 

     keys.add(key); 
    } 
} 

を今私は、これは簡単にクラスの外のArrayListを取り、メインクラスに格納することによって解決することができます知っています。しかし、私はすべての情報を1つのクラスに保存して、すべての情報にアクセスできるようにしたいと考えています。

"Control.key、Control.trigger、Control.keys" は、私はちょうど強迫性障害を持っている "キー、トリガ、キー"

それとも、より読みやすい/ちょうどよりエレガントですまだ私は自分のやり方でやりたいと思っています。

+0

あなたは内側の作成方法についての詳細情報を与えますクラス? – fmucar

答えて

30

Controlクラスを静的にすることができます。

private static class Control { 
     ^^^^^^ 

    // Ok to have static members: 
    public static ArrayList<String> keys = new ArrayList<String>(); 

    ... 

これはあなたの内部クラスは、静的作成し、それが動作しますSection §8.1.3

8.1.3 Inner Classes and Enclosing Instances

An inner class is a nested class that is not explicitly or implicitly declared static. Inner classes may not declare static initializers (§8.7) or member interfaces. Inner classes may not declare static members, unless they are compile-time constant fields (§15.28).

8

Java言語仕様で説明されています

private static class Control { ... 
関連する問題