我可以写:
AClass[] array = {object1, object2}
Run Code Online (Sandbox Code Playgroud)
我也可以写:
AClass[] array = new AClass[2];
...
array[0] = object1;
array[1] = object2;
Run Code Online (Sandbox Code Playgroud)
但我不能写:
AClass[] array;
...
array = {object1, object2};
Run Code Online (Sandbox Code Playgroud)
为什么这会被Java阻止?
我知道如何解决它,但有时会更简单.
例如:
public void selectedPointsToMove(cpVect coord) {
if (tab == null) {
if (arePointsClose(coord, point1, 10)) {
cpVect[] tempTab = {point1};
tab = tempTab;
} else if (arePointsClose(point2, coord, 10)) {
cpVect[] tempTab = {point2};
tab = tempTab;
} else {
cpVect[] tempTab = {point1,point2};
tab = tempTab;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个简单的问题一直困扰着我,因为我学会了如何在Java中使用数组.
可能重复:
数组常量只能用于初始值设定项错误
我正在研究数组,我通过这种在一行中声明和初始化数组的简短方法.例如,
int[] a = {1, 2, 3, 4, 5};
Run Code Online (Sandbox Code Playgroud)
但是当我尝试执行以下代码时,我得到了这个编译器错误,说"数组常量只能在初始化程序中使用".
int[] a;
a = {1, 2, 3, 4};
Run Code Online (Sandbox Code Playgroud)
为什么这样?
我试图将初始化列表{...}传递给构造函数,但它不起作用.当我在一个方法局部变量(int [])中声明它时,它可以完美地工作.
这是为什么?
public class QuickSort {
int[] a;
public QuickSort(int[] a) {
this.a = a;
}
public static void main(String[] args) {
// ###################
// ### WORKS ##
// ###################
int[] a = {8,12,79,12,50,44,8,0,7,289,1};
QuickSort sort = new QuickSort(a);
// ###################
// ### DOESN'T WORK ##
// ###################
//QuickSort sort = new QuickSort({8,12,79,12,50,44,8,0,7,289,1});
}
}
Run Code Online (Sandbox Code Playgroud)