我有一个内部类,用于存储用于游戏的控件的信息,现在我想在其中存储一个静态ArrayList,其中包含控件的所有名称。但我收到此错误:“仅在常量变量声明中允许使用修饰符静态”
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移出类并将其存储在主类中来轻松解决。但是我宁愿将所有信息都放在一个类中,以便我可以访问所有内容。
“ Control.key,Control.trigger,Control.keys” 比 “ key,trigger,keys” 更优美/更易读 __
也许我只是患有强迫症,但我还是想按照自己的方式去做。
您可以将Control类设为静态。
Control
private static class Control { ^^^^^^ // Ok to have static members: public static ArrayList<String> keys = new ArrayList<String>(); ...
Java语言规范第8.1.3节对此进行了描述。
8.1.3内部类和封闭实例 内部类是未显式或隐式声明为静态的嵌套类。内部类不得声明静态初始化器(第8.7节)或成员接口。 内部类不得声明静态成员,除非它们是编译时常量字段 (第15.28节)。
8.1.3内部类和封闭实例
内部类是未显式或隐式声明为静态的嵌套类。内部类不得声明静态初始化器(第8.7节)或成员接口。 内部类不得声明静态成员,除非它们是编译时常量字段 (第15.28节)。