Кажется, что ошибка в реализации Java varargs. Java не может различать соответствующий тип, когда метод перегружен различными типами параметров vararg.
Это дает мне ошибку The method ... is ambiguous for the type ...
Рассмотрим следующий код:
public class Test
{
public static void main(String[] args) throws Throwable
{
doit(new int[]{1, 2}); // <- no problem
doit(new double[]{1.2, 2.2}); // <- no problem
doit(1.2f, 2.2f); // <- no problem
doit(1.2d, 2.2d); // <- no problem
doit(1, 2); // <- The method doit(double[]) is ambiguous for the type Test
}
public static void doit(double... ds)
{
System.out.println("doubles");
}
public static void doit(int... is)
{
System.out.println("ints");
}
}
docs говорят: "Вообще говоря, вы не должны перегружать метод varargs, или программистам будет сложно понять которая вызывает перегрузку".
однако они не упоминают эту ошибку, и это не программисты, которым это сложно, это компилятор.
мысли?
EDIT - Компилятор: Sun jdk 1.6.0 u18