Java 修饰符static仅允许在常量变量声明中使用
我有一个内部类,用于存储我在游戏中使用的控件的信息,现在我想在其中存储一个静态ArrayList,其中包含所有控件的名称。但我得到了这个错误:“修饰符static只允许在常量变量声明中使用”Java 修饰符static仅允许在常量变量声明中使用,java,list,static,arraylist,Java,List,Static,Arraylist,我有一个内部类,用于存储我在游戏中使用的控件的信息,现在我想在其中存储一个静态ArrayList,其中包含所有控件的名称。但我得到了这个错误:“修饰符static只允许在常量变量声明中使用” 私有类控制{ 公共静态ArrayList键=新ArrayList(); 公共最终字符串密钥; 公共最终触发; 控件(字符串k、触发器t){ key=k; 触发器=t; key.add(key); } } 现在我知道,通过将ArrayList从类中取出并存储在主类中,可以很容易地解决这个问题。但是我更喜欢把
私有类控制{
公共静态ArrayList键=新ArrayList();
公共最终字符串密钥;
公共最终触发;
控件(字符串k、触发器t){
key=k;
触发器=t;
key.add(key);
}
}
现在我知道,通过将ArrayList从类中取出并存储在主类中,可以很容易地解决这个问题。但是我更喜欢把所有的信息都放在一个类中,这样我就可以访问所有的东西
Control.key,Control.trigger,Control.key
只是比
钥匙,触发器,钥匙
或者我只是有强迫症,但我还是想按我的方式来做。你可以让
控件
类保持静态
private static class Control {
^^^^^^
// Ok to have static members:
public static ArrayList<String> keys = new ArrayList<String>();
...
私有静态类控件{
^^^^^^
//确定是否有静态成员:
公共静态ArrayList键=新ArrayList();
...
Java语言规范对此进行了描述 8.1.3内部类和封闭实例 内部类是不是显式或隐式声明为静态的嵌套类。内部类不能声明静态初始值设定项(§8.7)或成员接口。内部类不能声明静态成员,除非它们是编译时常量字段(§15.28)
将内部类设置为静态,它将工作:
private static class Control { ...
提供有关如何创建内部类的更多信息?
private static class Control { ...