Java method with unlimited arguments

JavaMethodsArguments

Java Problem Overview


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?

Java Solutions


Solution 1 - Java

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

Solution 2 - Java

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionFranz KafkaView Question on Stackoverflow
Solution 1 - JavaBozhoView Answer on Stackoverflow
Solution 2 - JavanicovankView Answer on Stackoverflow