具有无限参数的Java方法

时间:2011-08-30 12:29:34

标签: java methods arguments

spring框架使用的方法可以传递任意数量的参数。

我想编写一个也可以获取无限量数据的函数。如何调用此功能以便我可以阅读它。或者我该如何定义它?

非常感谢。

2 个答案:

答案 0 :(得分:119)

它被称为varargs

它允许方法获取任意数量的参数。它们可以在方法中作为数组访问:

public void foo(String... args) {
    for (String arg : args) {
      // do smth with arg.
     }
}

这是syntactic sugar。编译器隐藏了数组创建,因此不是

 bar.foo(new String[] {"1", "2", "3"});
你写了

 bar.foo("1", "2", "3");

答案 1 :(得分:8)

要添加Bozho的答案,您还可以在varargs之前在方法中使用其他参数:

// foo(13, "foo", "bar", "baz");
// will print:
// 13 - |foo||bar||baz|
public void foo(int a, String... b) {
    System.out.println(a + " - ");

    for (String c : b) {
        System.out.print("|" + c + "|");
    }
}

但是之后你不能拥有不同类型的参数。这些不起作用:

public void bar(String... b, int b);
public void foo(int a, String... b, int b);