在声明中未包含数组初始化语法

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

我可以写:

AClass[] array = {object1, object2}

我也可以写:

AClass[] array = new AClass[2];
...
array[0] = object1;
array[1] = object2;

但我不能写:

AClass[] array;
...
array = {object1, object2};

为什么这会被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;
        }
    }
}
提问于
用户回答回答于

你可以这样写:

AClass[] array;
...
array = new AClass[]{object1, object2};
用户回答回答于

第一个例子

AClass[] array = {object1, object2}

实际上意味着

AClass[] array = new AClass[]{object1, object2};

但是Java设计人员所做的是,如果声明时创建数组,就可以更快地编写它。

建议的解决办法是好的。如果时间或内存使用在运行时非常重要,请使用数组。如果它并不重要,并且希望代码更易于理解和使用,那么使用ArrayList。

扫码关注云+社区