Why a method with one argument overloaded with arbitrary number of argument version compiles
<p>Why is this declaration not considered ambiguous in compile time?</p>

<pre><code>void f(int a) {
    System.out.println("int");
}
void f(int... a) {
    System.out.println("int...");
}
</code></pre>

<p>e.g.:</p>

<pre><code>f(2);     // to one parameter both method should match (f(int) runs)
f(2,2);   // f(int...)
</code></pre>
