在 Java 中使用省略号(...)?
我正在查看一些代码,并看到了以下符号。我有点不确定这三个点是什么意思,你怎么称呼它们。
void doAction(Object...o);
谢谢。
我正在查看一些代码,并看到了以下符号。我有点不确定这三个点是什么意思,你怎么称呼它们。
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 的限制内。一些示例:总和 (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);
}
}
正如评论部分所述:
另请注意,如果函数传递除 varargs 参数以外的其他不同类型的参数,则 vararg 参数应该是函数声明 public void test 中的最后一个参数(Typev ...v,1型a,2类b)或公共无效测试(类型1 a,类型v ...v recipientJids, Type2 b) - 是非法的。仅公共无效测试(类型1 a,类型2 b,类型v ...v)
它被称为varArgs http://www.javadb.com/using-varargs-in-java。在这种情况下,这意味着您可以将对象的多个实例作为参数放入 doAction() 中任意数量的实例:
doAction(new Object(), new Object(), new Object());