1. ホーム
  2. java

[解決済み] 宣言にない場合の配列の初期化構文

2022-05-03 22:02:27

質問

書くことができる。

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で配列の扱い方を学んで以来、ずっと私を悩ませ続けてきたものです。

どのように解決するのですか?

<ブロッククオート

なぜJavaでブロックされるのですか?

Java設計者に聞くしかないでしょう。何か微妙な文法的な理由があるのかもしれません。配列の作成/初期化コンストラクトのいくつかはJava 1.0にはなく、(IRC)Java 1.1で追加されたものであることに注意してください。

しかし、なぜ"は重要ではありません...制限はそこにあり、あなたはそれに耐えなければなりません。

回避する方法は知っていますが、時々はもっとシンプルにした方がいいでしょうね。

こう書けばいいんです。

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