संपादित के रूप में पार्स विकल्प मान प्राप्त कर सकते हैं: डिफ़ॉल्ट मान अब समर्थित हैं। नीचे https://stackoverflow.com/a/14309108/1082541 उत्तर देखें।
ब्रेंट Worden पहले से ही उल्लेख किया है, मूलभूत मूल्यों समर्थित नहीं हैं।
मैं Option.setType
भी उपयोग करने के साथ मुद्दों था। मैं हमेशा एक नल पॉइंटर एक्सेप्शन जब प्रकार Integer.class
साथ एक विकल्प पर getParsedOptionValue
बुला मिला है। क्योंकि प्रलेखन वास्तव में सहायक नहीं था क्योंकि मैंने स्रोत कोड में देखा।
TypeHandler वर्ग को देखते हुए और PatternOptionBuilder वर्ग आप देख सकते हैं कि Number.class
int
या Integer
के लिए इस्तेमाल किया जाना चाहिए।
CommandLineParser cmdLineParser = new PosixParser();
Options options = new Options();
options.addOption(OptionBuilder.withLongOpt("integer-option")
.withDescription("description")
.withType(Number.class)
.hasArg()
.withArgName("argname")
.create());
try {
CommandLine cmdLine = cmdLineParser.parse(options, args);
int value = 0; // initialize to some meaningful default value
if (cmdLine.hasOption("integer-option")) {
value = ((Number)cmdLine.getParsedOptionValue("integer-option")).intValue();
}
System.out.println(value);
} catch (ParseException e) {
e.printStackTrace();
}
ध्यान रखें कि यदि एक संख्या है जो एक int
में फ़िट नहीं होता प्रदान की जाती है कि value
अतिप्रवाह कर सकते हैं:
और यहाँ एक सरल उदाहरण है।
स्रोत
2011-05-10 20:13:44
उदाहरण के लिए धन्यवाद, यह वही है जो मुझे चाहिए। हालांकि, मैंने सीएलआई के खिलाफ फैसला किया है: यह बहुत अधिक काम है। हो सकता है कि यह सिर्फ मुझे है, लेकिन जब आपको आम मामलों को संभालना होता है तो मुझे यह आत्म-पराजित लगता है। पर्याप्त सेटअप कोड के साथ, मुझे बस 'int foo = getOption ("foo") कहने में सक्षम होना चाहिए और यदि कुछ भी गलत हो तो इसे 42 तक डिफ़ॉल्ट कर दें। – aib
हाँ, आप सही हैं।मुझे यह भी लगता है कि पुस्तकालय को इस सामान को संभालना चाहिए। कौन सा विकल्प पार्सिंग लाइब्रेरी आप इसके बजाय सिफारिश कर सकते हैं ?? –
मैं जावा दुनिया में नया हूं। यह पहला था जिसकी मैंने कोशिश की, और मैं किसी और के बारे में नहीं जानता। शायद आपको इसे एक प्रश्न के रूप में पोस्ट करना चाहिए? 'संख्या.क्लास' चीज़ को इंगित करने के लिए – aib