10
votes

Comment ajouter un nouvel élément à Varargs?

J'ai une méthode xxx pré>

à l'intérieur, je veux appeler une autre méthode et transmettre extras code> mais je veux ajouter un nouvel élément (description) aux extras.

     object_for_text = getObject(find_arguments,extra);


7 Réponses :


2
votes

extra code> est juste une chaîne code> (code> tableau. En tant que tel:

String[] extraWithDescription = new String[extra.length + 1];
int i = 0;
for(; i < extra.length; ++i) {
  extraWithDescription[i] = extra[i];
}
extraWithDescription[i] = description;
getObject(find_arguments, extraWithDescription);


5 commentaires

Je reçois Impossible d'invoquer l'asile () sur la chaîne de type tableau [] pour la première option.


Voulez-vous utiliser arranges.Aslist (extra) ? (Voir le commentaire de Radek).


Maintenant, je reçois Impossible d'invoquer Toarray () sur le type primitif Boolean pour Arrays.Anlist (extra) .Ajouter (description) .Tearray ()


Donnera un arrayindexoutofboundsException .


Cela ne fonctionnera plus (testé avec Java 8U144) puisque les arrayes.Aslist () renvoie une liste de taille fixe. Suggère d'utiliser des tableaux.copyof (...).



1
votes

Voulez-vous dire quelque chose comme ça? XXX


0 commentaires

0
votes

C'est simplement de cette façon ...

Traitez les var-args comme ci-dessous ...

Exemple:

dans votre exemple ci-dessus Le 2e paramètre est "String ... extra"

afin que vous puissiez utiliser comme ceci: xxx

ou xxx


0 commentaires

13
votes

Pour développer certaines des autres réponses ici, la copie de la matrice pourrait être effectuée un peu plus rapidement avec

String[] newArr = new String[extra.length + 1];
System.arraycopy(extra, 0, newArr, 0, extra.length);
newArr[extra.length] = Description;


0 commentaires

4
votes

Utiliser arranges.copyof (...) : xxx


0 commentaires

0
votes

avec Java 11 Utilisez comme paramètre pour une nouvelle liste:

List<String> templateArguments = new ArrayList<(Arrays.asList(args));
templateArguments.add(throwable.getMessage());
String.format(template, templateArguments.toArray());


0 commentaires

0
votes

conversion à la liste et retour au tableau, mais plus courte à l'aide de fonctions utilitaires: xxx


0 commentaires