The answer is rather difficult. But it is described in the JLS §15.12. Method Invocation Expressions. In these specifications, "variable arity" methods are methods with variable number of arguments, so varargs.
§15.12.2.4. Phase 3: Identify Applicable Variable Arity Methods
The method m is an applicable variable-arity method if and only if all
of the following conditions hold:
For 1 ≤ i < n, the type of ei, Ai, can be converted by method
invocation conversion to Si.
If k ≥ n, then for n ≤ i ≤ k, the type of ei, Ai, can be converted by
method invocation conversion to the component type of Sn.
If k != n, or if k = n and An cannot be converted by method invocation
conversion to Sn[], then the type which is the erasure (§4.6) of Sn is
accessible at the point of invocation.
If m is a generic method as described above, then Ul <:
Bl[R1=U1...,Rp=Up] (1 ≤ l ≤ p).
If no applicable variable arity method is found, a compile-time error
occurs.
Otherwise, the most specific method (§15.12.2.5) is chosen among the
applicable variable-arity methods.
So, we should look further to §15.12.2.5.
§15.12.2.5. Choosing the Most Specific Method
One variable arity member method named m
is more specific than another
variable arity member method of the same name if either:
One member method has n parameters and the other has k parameters,
where n ≥ k, and:
The types of the parameters of the first member method are T1, ...,
Tn-1, Tn[].
The types of the parameters of the other method are U1, ..., Uk-1,
Uk[].
If the second method is generic then let R1 ... Rp (p ≥ 1) be its type
parameters, let Bl be the declared bound of Rl (1 ≤ l ≤ p), let A1 ...
Ap be the type arguments inferred (§15.12.2.7) for this invocation
under the initial constraints Ti << Ui (1 ≤ i ≤ k-1) and Ti << Uk (k ≤
i ≤ n), and let Si = Ui[R1=A1,...,Rp=Ap] (1 ≤ i ≤ k).
Otherwise, let Si = Ui (1 ≤ i ≤ k).
For all j from 1 to k-1, Tj <:
Sj, and,
For all j from k to n, Tj <:
Sk, and,
If the second method is a generic method as described above, then
Al <:
Bl[R1=A1,...,Rp=Ap] (1 ≤ l ≤ p).
(T <: S
means T is a subtype of S)
Your methods do not match these conditions, so there is no "Most Specific" method. So, it says a little bit further:
It is possible that no method is the most specific, because there are
two or more methods that are maximally specific. In this case:
If all the maximally specific methods have override-equivalent
(§8.4.2) signatures, then:
If exactly one of the maximally specific methods is not declared
abstract, it is the most specific method.
Otherwise, if all the maximally specific methods are declared
abstract, and the signatures of all of the maximally specific methods
have the same erasure (§4.6), then the most specific method is chosen
arbitrarily among the subset of the maximally specific methods that
have the most specific return type.
However, the most specific method is considered to throw a checked
exception if and only if that exception or its erasure is declared in
the throws clauses of each of the maximally specific methods.
Otherwise, we say that the method invocation is ambiguous, and a
compile-time error occurs.
So, the conclusion: your methods are ambiguous following the JLS.