元数

参数数量定义了选项解析所接受的参数个数。

注解程序化 使用参数数量设置相比,传统注解 存在一些限制。这些限制将在下面的示例注释中提及。
  • 编程式

  • 注解

  • 传统注解

CommandRegistration zeroOrOne() {
	return CommandRegistration.builder()
		.command("example")
		.withOption()
			.longNames("arg")
			.arity(OptionArity.ZERO_OR_ONE)
			.and()
		.build();
}
@Command(command = "example")
String zeroOrOne(
	@Option(arity = OptionArity.ZERO_OR_ONE) String arg)
{
	return String.format("Hi '%s'", arg);
}
@ShellMethod(key = "example")
String zeroOrOne(
	@ShellOption(arity = 1) String arg)
{
	return String.format("Hi '%s'", arg);
}
表 1. OptionArity
最小/最大

0 / 0

零或一

0 / 1

正好一个

1 / 1

零或多个

0 / Integer MAX

一个或多个

1 / Integer MAX

传统注解 不支持定义最小参数数量。
  • 编程式

  • 注解

  • 传统注解

CommandRegistration zeroOrOneWithMinMax() {
	return CommandRegistration.builder()
		.command("example")
		.withOption()
			.longNames("arg")
			.arity(0, 1)
			.and()
		.build();
}
@Command(command = "example")
String zeroOrOneWithMinMax(
	@Option(arityMin = 0, arityMax = 1) String arg)
{
	return String.format("Hi '%s'", arg);
}
@ShellMethod(key = "example")
String zeroOrOneWithMinMax(
	@ShellOption(arity = 1) String arg)
{
	return String.format("Hi '%s'", arg);
}

在下面的示例中,我们有一个选项 arg1,它被定义为类型 String[]。参数数量定义它至少需要 1 个参数,并且不能超过 2 个。如下所示,当参数数量不匹配时,会抛出 TooManyArgumentsOptionExceptionNotEnoughArgumentsOptionException 特殊异常。

shell:>e2e reg arity-errors --arg1
Not enough arguments --arg1 requires at least 1.

shell:>e2e reg arity-errors --arg1 one
Hello [one]

shell:>e2e reg arity-errors --arg1 one two
Hello [one, two]

shell:>e2e reg arity-errors --arg1 one two three
Too many arguments --arg1 requires at most 2.
© . This site is unofficial and not affiliated with VMware.