It\'s just an exercise but I can\'t figure out the ambiguity:
private static void flipFlop(String str, int i, Integer iRef) {
System.out.println(str + \"ciao
If you enjoy riveting reading, here is the relevant portion of the Java Language specification that describes how methods are resolved.
But basically your third argument can be interpreted as a primitive or an autoboxed wrapper, and the compiler can't figure out what you want. Both methods are "maximally specific" to use the JLS terminology.