How to wrap Java String.format()?

Your code works. The vararg is more or less simply a syntactic boxing of the vararg.

In other words,the following two statements are actually identical:

String.format("%s %s", "Foo", "Bar")
String.format("%s %s", new Object[] {"Foo", "Bar"})

Your args in your code will always be an Object[], no matter if you have 0, 1, 2 or any other number of arguments.

Note that this is determined at compile time and looks at the static type of the object, so String.format("%s %s", (Object)new Object[] {"Foo", "Bar"}) will cause the array to be treated as a single object (and in this case cause a runtime error to be thrown).

If you still have problems with your code, please check that your example really is identical to how your code works.