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

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

我可以写:

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


鸿蒙传说
浏览 422回答 3
3回答

动漫人物

为什么这会被Java阻止?你得问问Java设计者。这种限制可能有一些微妙的语法原因。注意,有些数组创建/初始化构造不是在Java1.0中,(IIRC)是在Java1.1中添加的。但是“为什么”并不重要.。限制是存在的,你必须接受它。我知道如何解决这个问题,但有时会更简单。你可以这样写:AClass[] array;...array = new AClass[]{object1, object2};

阿波罗的战车

我不能回答为什么。但是如果你想要动态的东西,你为什么不考虑集合ArrayList。ArrrayList可以是任何对象类型。如果您想要将其作为数组使用,则可以在其上使用toArray()方法。例如:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList<String>&nbsp;al&nbsp;=&nbsp;new&nbsp;ArrayList<String>(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;al.add("one"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;al.add("two"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;strArray&nbsp;=&nbsp;(String[])&nbsp;al.toArray(new&nbsp;String[0]);希望这能帮到你。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java