Il semble y avoir un bug dans l'implémentation de Java Varargs. Java ne peut pas distinguer le type approprié lorsqu'une méthode est surchargée avec différents types de paramètres vararg.bug avec varargs et surcharge?
Il me donne une erreur The method ... is ambiguous for the type ...
Consultez le code suivant:
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");
}
}
le docs disent: « D'une manière générale, vous ne devriez pas surcharger une méthode varargs, ou il sera difficile pour les programmeurs à comprendre quelle surcharge est appelée. "
Cependant, ils ne mentionnent pas cette erreur, et ce ne sont pas les programmeurs qui trouvent cela difficile, c'est le compilateur.
pensées?
EDIT - compilateur: Sun JDK 1.6.0 u18
Peut-être ils parlent des programmeurs qui ont écrit le compilateur. – mob
Quelle version et compilateur? Eclipse ou JDK? –
voir edit - Sun jdk 1.6.0 u18 – pstanton