在Java中使用省略号(...)的? [重复](Use of ellipsis(…) in Ja

2019-07-04 09:22发布

这个问题已经在这里有一个答案:

  • 什么是这种方法的签名省略号(...)呢? 5个回答

我一直在寻找一些代码,看到下面的符号。 我有点不能确定的三个点的意思是,你打电话给他们什么。

void doAction(Object...o);

谢谢。

Answer 1:

这意味着,该方法可以接收一个以上的对象作为参数。 为了更好地低估从检查下面的例子在这里 :

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

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

与尽可能多的逗号分隔的整数参数调用总和法,你的愿望 - JVM的范围之内。 一些例子:和(10,20)和总和(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);
        }
    }

正如在评论部分提到:

还要注意的是,如果函数传递不同类型比可变参数参数的其他参数,可变参数的参数应该在函数声明公共无效测试的最后一个参数(Typev ... V,一个类型1,类型2 b)公共无效测试(类型1一,Typev ... v recipientJids,2型b) -是非法的 。 ONLY 公共无效测试(类型1一,2型B,Typev ... V)



Answer 2:

这就是所谓的可变参数http://www.javadb.com/using-varargs-in-java 。 在这种情况下,这意味着你可以把对象的多个实例作为参数传递给doAction()如你想要尽可能多的:

doAction(new Object(), new Object(), new Object());


文章来源: Use of ellipsis(…) in Java? [duplicate]