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

标签 java arrays

我可以写:

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 中使用数组以来,这个简单的问题就一直困扰着我。

最佳答案

Why is this blocked by Java?

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

但是“为什么”并不重要......限制就在那里,你必须忍受它。

I know how to work around it, but from time to time it would be simpler.

你可以这样写:

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

关于java - 不在声明中时的数组初始化语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33379627/

相关文章:

c++ - double[2] 错误 vector

Javascript 以 A1、B1、C1 等格式对混合阿尔帕/数字进行排序

java - Glassfish Server4 最大池大小和最长等待时间

java - Java中的字符串初始化

java - 如何防止屏幕旋转触发的onResume事件中跳过某个功能?

java - 拆分一个数组并将它们保存在 2 个单独的数组中

java - 黑莓 - 线程没有响应

java - 新部署给出嵌套异常是 java.lang.NoClassDefFoundError : org/postgresql/core/types/PGLong

java - 循环遍历二维数组并搜索某个值,然后打印出一个元素

arrays - 在bash中同时迭代两个数组