Google 致力于为黑人社区推动种族平等。查看具体举措
此页面由 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都是非选项位置参数,所有后续的String都是这样。 “-”之后的每个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 ( 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如果解析参数时发生错误。

parseBestEffort

public  parseBestEffort ( args)

替代的parseBestEffort(String)方法,它使用ERROR(/List)参数

参量
args

退货
剩余参数的ERROR(/List)

parseBestEffort

public  parseBestEffort ( args, 
                boolean forceContinue)

备用parseBestEffort(String)方法,该方法采用ERROR(/List)参数,并且即使有些args不解析,也可能被强制继续解析直到结束。

参量
args :将包含剩余的args的列表。

forceContinue boolean :即使某些参数不解析也应该继续解析,则为true。

退货
剩余参数的ERROR(/List)

parseBestEffort

public  parseBestEffort (String... args)

尽力而为的parse(String)版本。如果引发ConfigurationException,则在内部捕获该异常,并返回其余参数(包括导致引发异常的参数)。此方法不会抛出。

参量
args String

退货
剩余参数的ERROR(/List)

validateMandatoryOptions

public void validateMandatoryOptions ()

验证是否已设置所有标记为必填的字段。

投掷
ConfigurationException