Java variable number of arguments for a method
Solution 1
That's correct. You can find more about it in the Oracle guide on varargs.
Here's an example:
void foo(String... args) {
for (String arg : args) {
System.out.println(arg);
}
}
which can be called as
foo("foo"); // Single arg.
foo("foo", "bar"); // Multiple args.
foo("foo", "bar", "lol"); // Don't matter how many!
foo(new String[] { "foo", "bar" }); // Arrays are also accepted.
foo(); // And even no args.
Solution 2
Yes, it's possible:
public void myMethod(int... numbers) { /* your code */ }
Solution 3
Variable number of arguments
It is possible to pass a variable number of arguments to a method. However, there are some restrictions:
- The variable number of parameters must all be the same type
- They are treated as an array within the method
- They must be the last parameter of the method
To understand these restrictions, consider the method, in the following code snippet, used to return the largest integer in a list of integers:
private static int largest(int... numbers) {
int currentLargest = numbers[0];
for (int number : numbers) {
if (number > currentLargest) {
currentLargest = number;
}
}
return currentLargest;
}
source Oracle Certified Associate Java SE 7 Programmer Study Guide 2012
Solution 4
For different types of arguments, there is 3-dots :
public void foo(Object... x) {
String myVar1 = x.length > 0 ? (String)x[0] : "Hello";
int myVar2 = x.length > 1 ? Integer.parseInt((String) x[1]) : 888;
}
Then call it
foo("Hii");
foo("Hii", 146);
for security, use like this:
if (!(x[0] instanceof String)) { throw new IllegalArgumentException("..."); }
The main drawback of this approach is that if optional parameters are of different types you lose static type checking. Please, see more variations .
Solution 5
Yup...since Java 5: http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html
Related videos on Youtube
user69514
Updated on March 31, 2022Comments
-
user69514 about 2 years
Is it possible to declare a method that will allow a variable number of parameters ?
What is the symbolism used in the definition that indicate that the method should allow a variable number of parameters?
Answer: varargs
-
Dave over 10 yearsSince its homework, we don't want to know your question, we just want to know you are learning.
-
-
trusktr over 10 yearsIs it possible to do various type of paramteres? e.g. (String...strs, int... ints). What about just any type of argument in any order?
-
BalusC over 10 years@trusktr: if you want any object, just use
Object...
. -
Dick Lucas almost 10 years@trusktr No, primitives are not objects. There is a great explanation of the difference here: programmerinterview.com/index.php/java-questions/…
-
Sumit about 8 years@Richard: Using
Object... args
will work with primitives because of autoboxing. -
Stevoisiak about 7 yearsHow would you check the number of arguments?
-
LMD almost 7 years@StevenVascellaro : I assume that the arguments are handled like an array, so you could probably simply do
varargs.length