I have been writing java for a while, and today I encountered the following declaration:
public static void main(String... args) {
}
Note the "dot dot dot" in the array declaration, rather than the usual bracket []. Clearly it works. In fact I wrote a small test and verified it works. So, I pulled the java grammar to see where this syntax of argument declaration is, but did not find anything.
So to the experts out there, how does this work? Is it part of the grammar? Also, while I can declare function like this, I can't declare an array within a function's body like this.
Anyway, do you know of any place that has this documented. It is curiosity, and perhaps not worth of any time invested in it, but I was stumped.
You might want to read up on Using Variable Arguments (or varargs) in Java.
This is called variadic arguments, check here:
The official documentation (Java 1.5) is here:
It's called varadic argument: A function that takes as many (including zero) arguments as you want. For example,
main("string1", "string2", "string3")
is same asmain({"string1", "string2", "string3"})
if main is declared asvoid main(String...args)
.See http://www.java-tips.org/blog/java-se/varargs-%E2%80%93-java-50-addition.html
It means that the method accepts a variable number of String arguments. The arguments are treated as an array and so are accessed by subscript, in the order they are passed in.