2 votes

surcharge de deux méthodes avec vararg et String[] en paramètre

Je veux surcharger deux méthodes avec un seul paramètre, dans une méthode varargs de String et un autre String[] mais j'obtiens l'erreur de compilation suivante :

Duplicate method registerByName(String...)

Mon code est le suivant :

public void registerByName(String[] names)
{

}

public void registerByName(String...names)
{

}

Pourquoi ?

2voto

plucury Points 1040

"String..." et "String[]" sont exactement la même chose...

1voto

Nishant Points 22758

vararg est une autre façon de placer (Object[]) donc une Méthode MyMethod(MyObject[] obj) y MyMethod(MyObject... obj) sont les mêmes pour le compilateur. C'est juste du sucre syntaxique.

Vous pouvez faire référence au doc

Il est toujours vrai que plusieurs arguments doivent être passés dans un tableau, mais la fonctionnalité varargs automatise et cache le processus. En outre, elle est compatible ascendante avec les API préexistantes. Ainsi, par exemple, la méthode MessageFormat.format a maintenant cette déclaration :

public static String format(String pattern,
                            Object... arguments);

Les trois points qui suivent le type du paramètre final indiquent que les l'argument final peut être passé comme un tableau ou comme une séquence d'arguments . [...]

0voto

Daniel Points 3711

Si vous avez une méthode comme

public static void registerByName(String... names);

Il est parfaitement légal de l'appeler avec un argument de type tableau :

registerByName(new String[] {"sam"});

Pour cette raison, vous ne pouvez pas surcharger avec des Type[] y Type... .

La JVM ne sait même pas faire la différence entre ces deux signatures. Essayez d'exécuter javap sur un fichier de classe avec une méthode varargs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X