The type of each argument is given by the type you have given, there is no set number, and they are aggregated into an array. If you write
...
numbers has the type of
int[] inside the foo method. Note that foo(int ... numbers) and foo(int[] values) are overload-equivalents to each other, and cannot be compiled together.
Try
this Java™ Tutorials section.