这里不允许使用Android,Java数组初始值设定项

时间:2017-01-15 06:33:07

标签: java android arrays

我正在研究android项目,我收到一个我无法理解的错误“这里不允许使用数组初始化程序”

我试图简化我的代码,它归结为这个

public class MainActivity extends Activity{

    int pos = {0,1,2};

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        pos = {2,1,0};
    }
}

感谢任何解决方案,但如果您能解释一下这里发生了什么,我将不胜感激

4 个答案:

答案 0 :(得分:68)

你应该使用

pos = new int[]{1,2,3};

您只能在变量初始化时使用缩写语法int[] pos = {0,1,2};

private int[] values1 = new int[]{1,2,3,4};
private int[] values2 = {1,2,3,4}; // short form is allowed only at variable initialization

答案 1 :(得分:7)

您的初始化声明错误:您必须添加方括号才能声明一个数组(在这里您可以省略new关键字,因为您要声明并初始化变量at同时):

int[] pos = { 0, 1, 2 };

onCreate方法中,您无法省略new关键字,因为该变量已经声明,因此您必须写:

pos = new int[] { 2, 1, 0 };

您可以阅读Oracle documentationJava Language Specs了解详情。

答案 2 :(得分:4)

使用以下语法声明/初始化并清空数组,然后使用数据填充它:

String[] menuArray = {};
menuArray = new String[]{"new item","item 2"};

答案 3 :(得分:0)

这是int的编译时错误Illegal Initializer。 您可以通过在变量的数据类型之后添加方括号来解决此问题,如下所示:

int[] pos = {0, 1, 2};