在Java中使用省略号(…)?

我正在查看一些代码并看到以下表示法。 我有点不确定这三个点是什么意思,你称之为什么。

void doAction(Object...o); 

谢谢。

这意味着此方法可以接收多个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中的Variable参数方法的另一个例子

 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) - 是非法的 。 仅公开无效测试(Type1 a,Type2 b,Typev ... v)

它叫做VarArgs http://www.javadb.com/using-varargs-in-java 。 在这种情况下,这意味着您可以将多个Object实例作为参数放入doAction()中,并根据需要添加:

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

我会给你写一个例子来解释它们的含义(…)。

您可以在方法中定义一个可以接受变量参数(varargs)的参数。 以下是Employee类的示例,它定义了一个接受变量参数的方法daysOffWork:

 class Employee { public int daysOffWork(int... days) { int daysOff = 0; for (int i = 0; i < days.length; i++) daysOff += days[i]; return daysOff; } } 

数据类型后面的省略号(...)表示方法参数

天可以传递一个数组或多个以逗号分隔的值。