元數

引數數量定義了選項解析所接受的引數個數。

註解程式化 使用引數數量設定相比,傳統註解 存在一些限制。這些限制將在下面的示例註釋中提及。
  • 程式設計式

  • 註解

  • 傳統註解

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.