一尘不染

Java不在声明中时的数组初始化语法

java

我可以写:

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;
        }
    }
}

自从我学会了如何在Java中玩数组以来,这个简单的问题一直困扰着我。


阅读 339

收藏
2020-02-29

共1个答案

一尘不染

为什么这会被Java阻止?

你必须询问Java设计人员。该限制可能有一些微妙的语法原因。请注意,某些数组创建/初始化结构不在Java 1.0中,而(IIRC)是在Java 1.1中添加的。

但是“为什么”是无关紧要的……存在限制,你必须忍受它。

我知道如何解决它,但有时会更简单。

你可以这样写:

AClass[] array;
...
2020-02-29