Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 修饰符static仅允许在常量变量声明中使用_Java_List_Static_Arraylist - Fatal编程技术网

Java 修饰符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,其中包含所有控件的名称。但我得到了这个错误:“修饰符static只允许在常量变量声明中使用”

私有类控制{
公共静态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 { ...