J'ai du mal à passer une liste de chaînes dans une méthode nécessitant le paramètre "String ...".
Quelqu'un peut-il m'aider?
// How to put names into dummyMethod?
List<String> names = getNames();
public void dummyMethod(String... parameter) {
mInnerList.addAll(Arrays.asList(parameter));
}
Vous devrez convertir le List<String>
à un tableau String afin de l'utiliser dans le paramètre 'varargs' de dummyMethod
. Vous pouvez utiliser toArray
avec un tableau supplémentaire comme paramètre. Sinon, la méthode renvoie un Object[]
et il ne compilera pas:
List<String> names = getNames();
dummyMethod(names.toArray(new String[names.size()]));
Vous pouvez effectuer les opérations suivantes:
dummyMethod(names.toArray(new String[names.size()])
cela convertira la liste en tableau
Passer le tableau de chaînes (String[]
) à l'intérieur de la méthode. Vous devrez convertir votre liste en tableau puis la transmettre.
if (names != null) {
dummyMethod(names.toArray(new String[names.size()]));
}
Puisque vous analysez plus tard le paramètre en tant que liste, je suggère de changer la méthode pour:
public void dummyMethod(List<String> parameter) {
mInnerList.addAll(parameter);
}
pour éviter les frais supplémentaires.
Cependant, si vous souhaitez utiliser cette méthode "telle quelle", vous devez l'appeler ainsi:
dummyMethod(names.toArray(new String[names.size()]));
comme Glorfindel le suggère dans sa réponse , puisque les trois points signifient que vous pouvez appeler la méthode en utilisant de nombreuses chaînes, ou un tableau de chaînes (voir ce post pour plus de détails).
Le var-arg accepte en fait un tableau et vous pouvez l'utiliser comme:
dummyMethod(names.toArray(new String[names.size()]));
Voici un exemple de code:
List<String> names = new ArrayList<>();
names.add("A");
names.add("B");
dummyMethod(names.toArray(new String[names.size()]));
Il s'agit du paramètre vararg et pour cela, vous devez passer un tableau. ArrayList ne fonctionnera pas. Vous pouvez plutôt convertir cette liste en tableau avant de passer à la méthode.
String a = new String[names.size];
list.toArray(a)