Home >Java >javaTutorial >Can Java's Variable Arguments (Varargs) Accept Arrays as Arguments?
Can Arrays Be Passed as Arguments to Methods with Variable Arguments in Java?
Consider the following method:
class A { private String extraVar; public String myFormat(String format, Object ... args){ return String.format(format, extraVar, args); } }
The intent is for args to be individually passed to String.format, but as myFormat treats args as Object[], it conflicts with the goal.
Java's Varargs (Variable Arguments)
Java's syntactic sugar T... corresponds to T[]. According to the Java Language Specification (JLS 8.4.1), the final formal parameter may be variable arity, which considers it as an array of the specified type. Therefore, variable arity methods accept a variable number of arguments. Invocations of such methods can contain more actual arguments than formal parameters.
Solution
To achieve the desired behavior, an array can be passed to a method with variable arguments. The underlying principle is that every Object in the array is passed as an individual argument.
Here's a demonstrative example:
public static String ezFormat(Object... args) { String format = new String(new char[args.length]) .replace("", "[ %s ]"); return String.format(format, args); } public static void main(String... args) { System.out.println(ezFormat("A", "B", "C")); // prints "[ A ][ B ][ C ]" }
Note that String... is equivalent to String[].
Varargs Gotchas
The above is the detailed content of Can Java's Variable Arguments (Varargs) Accept Arrays as Arguments?. For more information, please follow other related articles on the PHP Chinese website!