I recently got interested in such a feature in Java, as functions with variable number of arguments. This is a very cool feature. But I'm interested:
void method(int x, String.. args) {
// Do something
}
How is this actually implemented on the runtime level? What comes to my mind, is that when we have a call:
method(4, "Hello", "World!");
The last two arguments are internally transformed into an array, that is passed to the method. Am I right about this, or the JVM actually pushes in the stack refereneces to the strings, not just one reference to the array?
It is implemented at compile time level. You method is compiled to bytecode as
varargs method(I[Ljava/lang/String;)V
...
which is equivalent to
void method(int x, String[] args) {
...
with varargs
flag.
And
method(4, "Hello", "World!");
is compiled as
method(4, new String[] {"Hello", "World!"});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With