Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

java.lang.Object
com.android.tradefed.config.OptionSetter
com.android.tradefed.config.ArgsOptionParser


根據已解析的命令行參數填充“ Option字段。

傳入的String []中的字符串從左到右進行解析。每個字符串都分為短選項(例如“ -v”),長選項(例如“ --verbose”),選項的參數(例如“ -f out.txt”中的“ out.txt”)。 ”)或非選項位置參數。

每個選項參數必須映射到一個或多個Option字段。長選項映射到Option名稱,而短選項映射到Option簡稱。每個選項名稱和選項短名稱對於同一對象內的所有其他Option字段必須唯一。

一個選項參數可以映射到多個對像中具有相同名稱的多個Option字段。可以對Option參數進行命名空間命名,以使用該對象的完整類名或由':'分隔的OptionClass別名值來唯一引用單個對象內的Option字段。即

 --classname:optionname optionvalue or
 --optionclassalias:optionname optionvalue.
 

一個簡單的短選項是一個“-”,後跟一個短選項字符。如果該選項需要一個參數(對於任何非布爾選項都適用),則可以將其寫為一個單獨的參數,但不必如此。也就是說,“-f out.txt”和“ -fout.txt”都是可以接受的。

只要所有(可能的最後一個除外)都不需要參數,就可以在單個“-”之後指定多個短選項。

長選項以“-”開頭,後跟幾個字符。如果選項需要一個參數,則可以將其直接寫在選項名稱之後,用“ =”分隔,或作為下一個參數。 (即,“-file = out.txt”或“ --file out.txt”。)

布爾長選項'--name'自動獲得'--no-name'伴侶。給定選項“ --flag”,則“ --flag”,“-no-flag”,“-flag = true”和“ --flag = false”均有效,儘管“ --flag”均無效允許使用“ true”或“ --flag false”(因為“ --flag”本身就足夠了,因此以下“ true”或“ false”將被分別解釋)。您可以將“是”和“否”用作“ true”和“ false”的同義詞。

每個不以“-”開頭且不是前一個選項的必需參數的字符串都是非選項位置參數,所有後續字符串也是如此。 “-”之後的每個String都是非選項位置參數。

與選項相對應的字段在處理選項時會更新。所有剩餘的位置參數都作為List <String>返回。

這是一個簡單的例子:

 // Non-@Option fields will be ignored.
 class Options {
     @Option(name = "quiet", shortName = 'q')
     boolean quiet = false;

     // Here the user can use --no-color.
     @Option(name = "color")
     boolean color = true;

     @Option(name = "mode", shortName = 'm')
     String mode = "standard; // Supply a default just by setting the field.

     @Option(name = "port", shortName = 'p')
     int portNumber = 8888;

     // There's no need to offer a short name for rarely-used options.
     @Option(name = "timeout" )
     double timeout = 1.0;

     @Option(name = "output-file", shortName = 'o' })
     File output;

     // Multiple options are added to the collection.
     // The collection field itself must be non-null.
     @Option(name = "input-file", shortName = 'i')
     List<File> inputs = new ArrayList<File>();

 }

 Options options = new Options();
 List<String> posArgs = new OptionParser(options).parse("--input-file", "/tmp/file1.txt");
 for (File inputFile : options.inputs) {
     if (!options.quiet) {
        ...
     }
     ...

 }

 
另請參見:
  • getopt(1)手冊頁
  • Python的“ optparse”模塊(http://docs.python.org/library/optparse.html)
  • POSIX“實用程序語法準則”(http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
  • GNU“命令行界面標準”(http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)

也可以看看:

摘要

公共建設者

ArgsOptionParser ( optionSources) ArgsOptionParser ( optionSources)

為對象集合創建一個ArgsOptionParser

ArgsOptionParser (Object... optionSources)

為一個或多個對象創建一個ArgsOptionParser

公開方法

static String getOptionHelp (boolean importantOnly, Object optionObject)

輸出中所有“ Option字段的幫助文本 optionObject 。

parse (String... args)

解析命令行參數'args',設置提供給構造函數的'optionSource'的@Option字段。

parse ( args) parse ( args)

帶有參數ERROR(/List)的替代parse(String)方法

parseBestEffort ( args) parseBestEffort ( args)

parseBestEffort(String)參數ERROR(/List)的替代parseBestEffort(String)方法

parseBestEffort ( args, boolean forceContinue) parseBestEffort ( args, boolean forceContinue)

備用parseBestEffort(String)方法,該方法採用ERROR(/List)參數,並且即使有些args不解析,也可能被強制繼續解析直到結束。

parseBestEffort (String... args)

盡力而為的parse(String)版本。

void validateMandatoryOptions ()

驗證是否已設置所有標記為必填的字段。

公共建設者

ArgsOptionParser

public ArgsOptionParser ( optionSources)

為對象集合創建一個ArgsOptionParser

參量
optionSources :配置對象。

投擲
ConfigurationException 如果配置對象配置不正確。

ArgsOptionParser

public ArgsOptionParser (Object... optionSources)

為一個或多個對象創建一個ArgsOptionParser

參量
optionSources Object :配置對象。

投擲
ConfigurationException 如果配置對象配置不正確。

公開方法

getOptionHelp

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

輸出中所有“ Option字段的幫助文本 optionObject 。

每個選項的幫助文本將採用以下格式

   [-option_shortname, --option_name]          [option_description] Default:
   [current option field's value in optionObject]
 
如果選項字段為null或為空,則將省略“ Default ...”文本。

參量
importantOnly boolean :如果為true僅打印重要選項的幫助

optionObject Object :要為其打印幫助文本的對象

退貨
String 包含所有選項字段的用戶友好幫助文本的字符串

解析

public  parse (String... args)

解析命令行參數'args',設置提供給構造函數的'optionSource'的@Option字段。

參量
args String

退貨
處理所有選項後留下的位置參數的ERROR(/List)

投擲
ConfigurationException 如果在解析參數時發生錯誤。

解析

public  parse ( args)

帶有參數ERROR(/List)的替代parse(String)方法

參量
args

退貨
處理所有選項後留下的位置參數的ERROR(/List)

投擲
ConfigurationException 如果在解析參數時發生錯誤。

盡力而為

public  parseBestEffort ( args)

parseBestEffort(String)參數ERROR(/List)的替代parseBestEffort(String)方法

參量
args

退貨
剩餘參數的ERROR(/List)

盡力而為

public  parseBestEffort ( args, 
                boolean forceContinue)

備用parseBestEffort(String)方法,該方法採用ERROR(/List)參數,並且即使有些args不解析,也可能被強制繼續解析直到結束。

參量
args :將包含剩餘的args的列表。

forceContinue boolean :即使某些參數不解析也應該繼續解析,則為true。

退貨
剩餘參數的ERROR(/List)

盡力而為

public  parseBestEffort (String... args)

盡力而為的parse(String)版本。如果引發ConfigurationException,則在內部捕獲該異常,並返回其餘參數(包括導致引發異常的參數)。此方法不會拋出。

參量
args String

退貨
剩餘參數的ERROR(/List)

validateMandatoryOptions

public void validateMandatoryOptions ()

驗證是否已設置所有標記為必填的字段。

投擲
ConfigurationException