2

次のように配列を設定できます。

Object[] objects = {new Object()};

ただし、メソッドがある場合:

public void setObject(Object[] objects) {

}

次のことができません。

setObject({new Object()});

どうしてこれなの?なぜ{new Object()}引数として十分ではなく、Object[]配列を初期化するのに十分なのですか?

4

4 に答える 4

3

配列を入力していないためです。オブジェクト、整数、何でもかまいません。

以下が機能するはずです。

setObject(new Object[]{new Object()});
于 2013-05-22T16:25:15.883 に答える
1

すべての Java 配列にはコンポーネント型があります。初期化子で使用すると、コンパイラは、新しい配列の型 (右側) が宣言された型 (左側) と同じであると推論します。

宣言が欠落している場合、コンパイラは配列のコンポーネントの型がどうあるべきかを知りません。式を使用して、明示的にする必要がありますsetObject(new Object[] { new Object() })

変数を初期化するときのように、コンパイラがメソッド パラメーターの宣言された型から型を推測しないのはなぜかと思う人もいるかもしれません。ただし、コンパイラはパラメーターの型に基づいて呼び出すメソッドを解決します。呼び出しているメソッドがわからない場合は、そのパラメーターの型から何も推測できません。変数を初期化するときに循環性はありません。

于 2013-05-22T16:50:06.113 に答える