Est d'une longueur variable en argument traitée comme un tableau en Java?
Que je comprends un array
se compose d'un nombre fixe d'éléments et un variable length argument
faut que le plus grand nombre des arguments que vous passez (de même type). Mais sont-ils de même? Puis-je passer de l'un où l'autre est prévu?
Avez-vous essayé? Il ne prend pas beaucoup à écrire quelques lignes de Java. La réponse est: Oui, vous pouvez également passer un tableau à une variable en argument de la méthode et il sera utilisé comme argument la liste. Mais Aucun, vous ne pouvez pas passer la variable d'arguments pour une méthode qui est déclaré accepter un tableau.
Votre commentaire est très utile. Je vous remercie.
Votre commentaire est très utile. Je vous remercie.
OriginalL'auteur | 2014-04-19
Vous devez vous connecter pour publier un commentaire.
Oui, si vous avez une méthode avec un varargs paramètre comme ceci:
et vous l'appeler comme ceci:
puis le compilateur juste convertit en:
Le type de la
names
paramètre estString[]
, et peut être utilisée comme n'importe quelle autre variable tableau. Notez qu'il pourrait encore êtrenull
:Voir le documentation pour les varargs pour plus d'informations.
Cela ne pas dire que varargs sont interchangeables avec les tableaux - vous encore besoin de déclarer la méthode d'accepter varargs. Par exemple, si votre méthode a été déclaré que:
alors le premier moyen d'appel il ne serait pas compiler.
Oui, vous pouvez vous que vous pouvez facilement tester par vous-même, bien sûr.
OriginalL'auteur Jon Skeet
Ils sont les mêmes, le tableau est utilisé en interne par la JVM lors de la création de varargs méthodes. Vous pouvez donc traiter vararg argument de la même façon que vous traitez tableau afin d'utiliser par exemple amélioré pour la boucle
et de l'appeler comme ça ou même passer un tableau
Voir cette belle l'article pour de plus amples explications.
OriginalL'auteur Petr Mensik
Un simple test suggèrent que ce sont les mêmes:
Sorties:
OriginalL'auteur Sam G-H