我正在研究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};
}
}
感谢任何解决方案,但如果您能解释一下这里发生了什么,我将不胜感激
答案 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 documentation和Java Language Specs了解详情。
答案 2 :(得分:4)
使用以下语法声明/初始化并清空数组,然后使用数据填充它:
String[] menuArray = {};
menuArray = new String[]{"new item","item 2"};
答案 3 :(得分:0)
这是int的编译时错误Illegal Initializer。 您可以通过在变量的数据类型之后添加方括号来解决此问题,如下所示:
int[] pos = {0, 1, 2};