bug com varargs e sobrecarga?
Parece haver um bug na implementação do Java varargs. Java não pode distinguir o tipo apropriado quando um método está sobrecarregado com diferentes tipos de parâmetros vararg.
Isso me dá um erroThe method ... is ambiguous for the type ...
Considere o seguinte código:
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");
}
}
adocs diga: "De um modo geral, você não deve sobrecarregar um método varargs, ou será difícil para os programadores descobrir qual sobrecarga é chamada."
no entanto, eles não mencionam esse erro, e não são os programadores que estão achando difícil, é o compilador.
pensamentos?
EDITAR - Compilador: Sun jdk 1.6.0 u18