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

2022-09-01 07:46:41

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

void doAction(Object...o);

谢谢。


答案 1

这意味着此方法可以接收多个 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)


答案 2

它被称为varArgs http://www.javadb.com/using-varargs-in-java。在这种情况下,这意味着您可以将对象的多个实例作为参数放入 doAction() 中任意数量的实例:

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