Here’s another question of “How would I do this in Java?” In Python, I can use the ‘*’ symbol to unpack arguments like so:
>>> range(3, 6) # normal call with separate arguments
[3, 4, 5]
>>> args = [3, 6]
>>> range(*args) # call with arguments unpacked from a list
[3, 4, 5]
Java supports getting a list of args with ...args syntax, but is there a way (perhaps using the Reflection libraries?) to unpack those for some other function?
Can be called like this:
The
...syntax is really syntactic sugar for arrays.Java doesn’t have the facility that you describe, but you could fake it several ways.
I think the closest approximation means overloading any function that you want to use in that fashion using varargs.
If you have some method:
You can overload it:
But this is really clumsy and error prone and hard to maintain.
More generically, you could use reflection to call any method using any arguments, but it’s got a ton of pitfalls, too. Here’s a buggy, incomplete example of how it gets ugly really fast: