Tim*_*eus 24 java static list arraylist
我有一个内部类存储我正在用于游戏的控件的信息,现在我想在其中存储一个包含所有控件名称的静态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);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我知道这可以通过将ArrayList从类中取出并存储在主类中来轻松解决.但我更愿意将所有信息保存在一个可以访问所有内容的课程中.
"Control.key,Control.trigger,Control.keys" 比"键,触发器,键"更优雅/可读
或许我只是有强迫症,我仍然想按照自己的方式去做.
aio*_*obe 39
您可以使Control该类静态.
private static class Control {
^^^^^^
// Ok to have static members:
public static ArrayList<String> keys = new ArrayList<String>();
...
Run Code Online (Sandbox Code Playgroud)
这在Java语言规范部分§8.1.3中有所描述
8.1.3内部类和封闭实例
内部类是未显式或隐式声明为静态的嵌套类.内部类可能不会声明静态初始化器(第8.7节)或成员接口.内部类可能不会声明静态成员,除非它们是编译时常量字段(第15.28节).