Apache Commons CLI - type de l'option et la valeur par défaut
Comment puis-je donner un CLI Option un type comme int
ou Integer
? (Plus tard, comment puis-je obtenir la valeur analysée avec un seul appel de fonction?)
Comment puis-je donner un CLI Option une valeur par défaut? Tels que CommandLine.getOptionValue()
ou l'appel de la fonction mentionnée ci-dessus renvoyer cette valeur sauf si il est spécifié sur la ligne de commande?
Vous devez vous connecter pour publier un commentaire.
EDIT: par Défaut, les valeurs sont maintenant pris en charge. Voir la réponse https://stackoverflow.com/a/14309108/1082541 ci-dessous.
Comme Brent Worden déjà mentionné, les valeurs par défaut ne sont pas pris en charge.
J'ai eu des problèmes avec l'utilisation
Option.setType
trop. J'ai toujours eu un null pointer exception lors de l'appel degetParsedOptionValue
sur une option de typeInteger.class
. Parce que la documentation n'était pas vraiment utile, j'ai regardé dans le code source.À la recherche à la TypeHandler classe et la PatternOptionBuilder classe, vous pouvez voir que
Number.class
doit être utilisé pourint
ouInteger
.Et voici un exemple simple:
Gardez à l'esprit que
value
peut déborder si un numéro est fourni qui ne rentre pas dans unint
.int foo = getOption("foo")
et ont une valeur par défaut à 42 si quelque chose va mal.Number.class
chose. J'ai naïvement devraitInteger.class
au travail...!Je ne sais pas si ne fonctionne pas ou si vous avez ajouté de la mais getOptionValue() a une version surchargée qui accepte une valeur par défaut (String) valeur
CLI ne prend pas en charge les valeurs par défaut. Tout annuler les résultats dans
getOptionValue
retournull
.Vous pouvez spécifier les types d'options à l'aide de la Option.setType méthode et d'en extraire le analysée à la valeur de l'option en tant que type à l'aide de En ligne de commande.getParsedOptionValue
La OptionBuilder est obsolète dans la version 1.3 & 1.4 et
Option.Builder
ne semble pas avoir de fonction directe pour définir le type. Il y a une fonction pour leOption
classe appeléesetType
. Vous pouvez récupérer la valeur convertie avec la fonctionCommandLine.getParsedOptionValue
.Je ne sais pas pourquoi ce n'est pas le constructeur le plus. Cela nécessite un peu de code comme ceci maintenant:
et, en la lisant:
qui donnerait une variable de type
Long