问题

是否可以声明一个允许可变数量参数的方法?

定义中使用的符号是什么,表明该方法应该允许可变数量的参数?

**答案:**varargs


#1 热门回答(217 赞)

那是对的。你可以在the Oracle guide on varargs找到更多相关信息。

这是一个例子:

void foo(String... args) {
    for (String arg : args) {
        System.out.println(arg);
    }
}

可称为

foo("foo"); // Single arg.
foo("foo", "bar"); // Multiple args.
foo("foo", "bar", "lol"); // Don't matter how many!
foo(new String[] { "foo", "bar" }); // Arrays are also accepted.
foo(); // And even no args.

#2 热门回答(12 赞)

是的,这是可能的:

public void myMethod(int...numbers) { ... }

#3 热门回答(12 赞)

Variable number of arguments

可以将可变数量的参数传递给方法。但是,有一些限制:

  • 可变数量的参数必须都是相同的类型
  • 它们被视为方法中的数组
  • 它们必须是方法的最后一个参数

要了解这些限制,请考虑以下代码片段中的方法,该方法用于返回整数列表中的最大整数:

private static int largest(int... numbers) {
     int currentLargest = numbers[0];
     for (int number : numbers) {
        if (number > currentLargest) {
            currentLargest = number;
        }
     }
     return currentLargest;
}

源Oracle认证助理Java SE 7程序员学习指南2012


原文链接