34

私はいくつかのコードを調べていて、次の表記を見ました。3 つの点が何を意味し、あなたがそれらを何と呼んでいるのか、私には少しわかりません。

void doAction(Object...o);

ありがとう。

4

2 に答える 2

36

これは、このメソッドがパラメーターとして複数のオブジェクトを受け取ることができることを意味します。よりよく理解するために、ここから次の例を確認してください。

省略記号 (...) は可変数の引数を識別し、次の合計方法で示されます。

static int sum (int ... numbers)
{
   int total = 0;
   for (int i = 0; i < numbers.length; i++)
        total += numbers [i];
   return total;
}

JVM の制限内で、コンマ区切りの整数引数を必要なだけ指定して summation メソッドを呼び出します。いくつかの例: sum (10, 20) と sum (18, 20, 305, 4)。

メソッドをより抽象化できるため、これは非常に便利です。SO のこの素敵なも確認してください。ユーザーが ... 表記を利用して、Java で文字列配列を連結するメソッドを作成したかどうかを確認してください。

Java 5 の可変引数メソッドの別の例

public static void test(int some, String... args) {
        System.out.print("\n" + some);
        for(String arg: args) {
            System.out.print(", " + arg);
        }
    }

コメントセクションで言及されているように:

また、関数が varargs パラメータとは異なる型の他のパラメータを渡す場合、vararg パラメータは関数宣言public void test (Typev ... v , Type1 a, Type2 b)またはpublic void test(Type1 a, Typev ... v recipientJids, Type2 b) -不正です。public void テストのみ(Type1 a、Type2 b、Typev ... v)

于 2012-12-02T02:45:12.807 に答える
3

VarArgs http://www.javadb.com/using-varargs-in-javaと呼ばれます。この場合、 Object の複数のインスタンスをパラメータとして doAction() に必要な数だけ配置できることを意味します。

doAction(new Object(), new Object(), new Object());
于 2012-12-02T02:48:44.370 に答える