34

我正在查看一些代码并看到以下符号。我有点不确定这三个点是什么意思,你怎么称呼它们。

void doAction(Object...o);

谢谢。

4

2 回答 2

36

这意味着该方法可以接收多个 Object 作为参数。为了更好地理解,请从此处查看以下示例:

省略号 (...) 标识可变数量的参数,并在以下求和方法中演示。

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);
        }
    }

如评论部分所述:

另请注意,如果函数传递的参数类型与可变参数不同,可变参数应该是函数声明中的最后一个参数public void test (Typev ... v , Type1 a, Type2 b)public void test(Type1 a, Typev ... v recipientJids, Type2 b) - 是非法的。只有公共无效测试(Type1 a,Type2 b,Typev ... v)

于 2012-12-02T02:45:12.807 回答
3

It's called VarArgs http://www.javadb.com/using-varargs-in-java. In this case, it means you can put multiple instances of Object as a parameter to doAction() as many as you wants :

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