18

メソッド定義時にパラメーターの一部として使用される場合、3 つのドット (...) は何を示しますか?

また、これらの 3 つのドットの記号を表すプログラミング用語はありますか?

コードサンプルで気づきました:

public void method1 (Animal... animal) {
// Code
}

そして、このメソッドは2か所から呼び出されました。ただし、呼び出し中に渡される引数は、両方のシナリオで異なりました。

  1. オブジェクトの配列が引数として method1(Animal...) に渡されます

  2. method1(Animal...) に引数として渡されたクラス Animal のオブジェクト

では、メソッドの引数として配列の 1 つの要素を渡すのか、配列全体を渡すのかがわからない場合は、メソッド定義のパラメーターの一部として 3 つのドットを使用するようなものですか?

また、その 3 つのドットの記号を表すプログラミング用語があれば教えてください。

4

3 に答える 3

19

これは可変引数と呼ばれます。

これは、その型を好きなだけ渡すことができることを意味します。

それは実際にそれをに変換し、他の配列と同じようにmethod1(Animal[] a)それらを参照します。a[1]

私が次のものを持っている場合

Cat whiskers = new Cat();
Dog rufus = new Dog();
Dolphin flipper = new Dolphin();

method1(whiskers, rufus, flipper); // okay!
method1(rufus); // okay!
method1(); // okay!
method1(flipper,new Parakeet()); // okay!
于 2012-07-27T15:26:49.550 に答える
5

つまり、メソッドはそのタイプのオブジェクトの配列を受け入れます、そのタイプの複数のオブジェクトをカンマで区切って渡すと、その配列が自動的に作成されます。

メソッド シグネチャには特定の型の vararg パラメーターを 1 つしか含めることができず、vararg に続くシグネチャに同じ型の別の引数を含めることはできないことに注意してください (明らかに、 2)。

于 2012-07-27T15:27:50.110 に答える
1

これは、0 個以上の String オブジェクト (またはそれらの配列) をその関数のパラメーターとして渡すことができることを意味します。

多分:

x("foo", "bar");
x("foo", "bar", "baz");
于 2012-07-27T15:29:27.740 に答える