In Java, for a method to accept any number(including zero) of arguments, we can use varargs which has the following format:
myMethod(myType ... myArgumentName)
For example:
private static void variableInt(int ... ints) { for (int i = 0; i < ints.length; i++) { System.out.print("i = " + ints[i] + " "); } System.out.println("end"); }
Run it in main class:
public class MainClass { private static void variableInt(int ... ints) { for (int i = 0; i < ints.length; i++) { System.out.print("i = " + ints[i] + " "); } System.out.println("end"); } public static void main(String[] args) { variableInt(); variableInt(2); variableInt(3, 5, 6); } }
Output:
end
i = 2 end
i = 3 i = 5 i = 6 end
The data type to be passed in varargs method could be class as well:
public class Person { private String name; // public setter and getter of all the fields }
Try with Person class:
public class MainClass { private static void variablePerson(Person ... persons) { for (int i = 0; i < persons.length; i++) { System.out.print("name = " + persons[i].getName() + " "); } System.out.println("end"); } public static void main(String[] args) { Person mary = new Person("Mary"); Person tom = new Person("Tom"); Person sam = new Person("Sam"); Person peter = new Person("Peter"); Person susan = new Person("Susan"); variablePerson(mary, tom); variablePerson(mary, tom, sam, peter, susan); } }
Output:
name = Mary name = Tom end
name = Mary name = Tom name = Sam name = Peter name = Susan end
Varargs could be used together with other arguments. The only requirement is varargs could only be used as the last argument
for example:
private static void variablePersonWithCount(int count, Person ... persons) { for (int i = 0; i <count && i < persons.length; i++) { System.out.print("name = " + persons[i].getName() + " "); } System.out.println("end"); }
Run it in main class:
public class MainClass { private static void variablePersonWithCount(int count, Person ... persons) { for (int i = 0; i < count && i < persons.length; i++) { System.out.print("name = " + persons[i].getName() + " "); } System.out.println("end"); } public static void main(String[] args) { Person mary = new Person("Mary"); Person tom = new Person("Tom"); Person sam = new Person("Sam"); Person peter = new Person("Peter"); Person susan = new Person("Susan"); variablePersonWithCount(3, mary, tom); variablePersonWithCount(3, mary, tom, sam, peter, susan); } }
Output:
name = Mary name = Tom end
name = Mary name = Tom name = Sam end