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

cov*_*bob 27 java oop syntax object

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

void doAction(Object...o);
Run Code Online (Sandbox Code Playgroud)

谢谢.

dre*_*ash 31

这意味着此方法可以接收多个Object作为参数.为了更好地低估,请从此处查看以下示例:

省略号(...)标识可变数量的参数,并在以下求和方法中进行演示.

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

使用尽可能多的逗号分隔的整数参数调用summation方法 - 在JVM的限制范围内.一些例子: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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

正如评论部分所述:

另请注意,如果函数传递的值不同于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)

  • @ jmort253谢谢,我正在添加一个示例:) (2认同)