Créer des chaînes de la liste en Groovy
Le code suivant dans Groovy ajoute GString
s à la liste:
List<String> args = [ 'cmd', "-Dopt=${value}" ]
Quand je crée un ProcessBuilder
avec cette liste, je reçois un ClassCastException
. Qu'est ce qu'un groovy façon d'obliger les éléments de la liste pour le bon type?
J'ai ajouté un commentaire sur la façon d'éviter ProcessBuilder complètement à ma réponse (je vous poste ça au cas où vous l'avez manqué)... Il pourrait vous faire économiser de travail 🙂
OriginalL'auteur Aaron Digulla | 2011-07-06
Vous devez vous connecter pour publier un commentaire.
Ou, vous pouvez faire:
ou
en fait, pourquoi êtes-vous à l'aide de ProcessBuilder de l'intérêt? Groovy ajoute façons de le faire la gestion des processus, et ajoute même trois
execute
les méthodes de ListeQue vous pouvez faire (c'est sur OS X ou Linux):
qui imprime les fichiers dans mon
/tmp
dossierList
à unString[]
et que le retour à unList
, le second crée une copie de laList
ainsi et appelstoString()
sur chaque élément.Ouais, mais ils ont tous deux l'air plus propre (à mon humble avis) que l'intégration de
toString
à l'intérieur de la liste des éléments spécifiques (et il le rend moins probable que vous avez manqué un élément)très vrai. Aussi c'est très peu de chances d'être l'élément essentiel sur un code-chemin.
ProcessBuilder
accepte également unString[]
- donc, la première alternative peut être remplacé à:String[] args = [ 'cmd', "-Dopt=${value}"] as String[]
vous pouvez appeler
consumeProcessOutput(OutputStream output, OutputStream error)
sur laProcess
de l'objet renvoyé parexecute()
OriginalL'auteur tim_yates
Essayer
parce que le plus tard est un
GString
.OriginalL'auteur Erich Kitzmueller
J'ai fait un test:
La sortie a été:
De changer un peu le code:
produit ce:
Devrait faire l'affaire, mais je ne suis pas 100% sûr que c'est la meilleure façon de le faire.
System.out.println(args*.getClass())
pour être plus facile à écrire et à produire de plus agréable à la sortie 😉Cool! (ou devrais-je dire, Groovy!)
OriginalL'auteur RonK