2011-08-30 121 views
33

Spring框架使用方法,您可以根据需要传递尽可能多的参数。具有无限参数的Java方法

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

非常感谢。

+0

哪个类有这种方法?也许就像静态主(String []参数) – jjchiw

+0

定义“无限量的数据”。 – pap

回答

93

它被称为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"); 
4

要添加Bozho的答案,你也可以在你的方法,其他参数可变参数之前:

// 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);