web-dev-qa-db-fra.com

Passage de la liste <String> à la chaîne ... paramètre

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));
}
13
RuNaWaY87

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()]));
13
Glorfindel

Vous pouvez effectuer les opérations suivantes:

dummyMethod(names.toArray(new String[names.size()]) 

cela convertira la liste en tableau

5
Ahmad Al-Kurdi

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()])); 
}
3
Naman Gala

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).

2
vefthym

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()]));
2
akhil_mittal

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)
2
SacJn