【发布时间】:2012-11-19 21:30:51
【问题描述】:
我正在查看一些代码并看到以下符号。我有点不确定这三个点是什么意思,你怎么称呼它们。
void doAction(Object...o);
谢谢。
【问题讨论】:
我正在查看一些代码并看到以下符号。我有点不确定这三个点是什么意思,你怎么称呼它们。
void doAction(Object...o);
谢谢。
【问题讨论】:
表示这个方法可以接收多个Object作为参数。为了更好地理解,请查看here 中的以下示例:
省略号 (...) 标识可变数量的参数,并且是 用下面的求和法证明。
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 的这个不错的example,用户是否利用 ... 符号来创建一种在 Java 中连接字符串数组的方法。
来自Variable argument method in 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)
【讨论】:
public void test ( Typev ... v , Type1 a, Type2 b) 或public void test(Type1 a, Typev ... v recipientJids, Type2 b) - 非法。 仅限 public void test(Type1 a, Type2 b, Typev ... v) - 合法。
它被称为 VarArgs http://www.javadb.com/using-varargs-in-java。在这种情况下,这意味着您可以根据需要将多个 Object 实例作为 doAction() 的参数:
doAction(new Object(), new Object(), new Object());
【讨论】: