Take a look at the following code
If you uncomment the third ambiguity method, then there will be an ambiguity error. As the code stands, you won't get any error because null can be passed to Object and Integer but since Integer is more specific (as its a sub-class of Object), thus the method which takes Integer is chosen. If you uncomment the third ambiguity method, then compiler is not able to choose which method should be called. Integer and
String are both in different hierarchies. The same thing happens in your code too. When you don't pass any parameters, if there are 2 methods which take Object... and Integer..., then the one with Integer... is chosen. But if you introduce the third method, then the compiler is not able to choose between String... and Integer...