我可以写:
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中使用数组.
为什么这样做:
String[] array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);
Run Code Online (Sandbox Code Playgroud)
但这不是:
List<String> list = Arrays.asList({"a","b","c"});
Run Code Online (Sandbox Code Playgroud) 我知道在C中我可以做到以下几点.
int test[5] = {1, 2, 3, 4, 5};
Run Code Online (Sandbox Code Playgroud)
现在,这在声明数组时才合法.但是我想知道为什么以后这样做不合法?但是后来在该计划中,执行以下操作是不合法的.
test[5] = {10, 20, 30, 40, 50};
Run Code Online (Sandbox Code Playgroud)
或类似的东西.为什么是这样?我知道这不合法,我不是在抱怨,但有人可以给我一个更技术性的解释,说明为什么我不能这样做?(即不要只说C规范不允许它或类似的东西)
我假设它必须对内存在数组的堆栈上分配的时间做一些事情,所以在那一点C可以自动填充我的值,但那么为什么它不能在以后呢?
多谢你们