Java method with unlimited arguments

The Spring framework uses methods where you can pass as many arguments as you like.

I would like to write a function that can also take an unlimited amount of data. How is this feature called so that I can read about it? Or how can I define it?


It's called varargs.

It allows a method to take any number of arguments. They are accessible as an array in the method:

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

This is syntactic sugar. The compiler hides the array creation, so instead of

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

you write

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

To add the Bozho's answer, you can also have other arguments in your method before 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 + "|");
    }
}

However you can not have arguments of a different type after. These do not work:

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