| 此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Shell 3.4.0! | 
阿尔蒂
Arity 定义了选项解析需要多少个参数。
| 存在 legacy annotation与annotation和programmatic使用 ARITY 设置。这些在
下面是示例。 | 
- 
Programmatic 
- 
Annotation 
- 
Legacy Annotation 
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);
}| 值 | 最小/最大 | 
|---|---|
| 零 | 0 / 0 | 
| ZERO_OR_ONE | 0 / 1 | 
| EXACTLY_ONE | 1 / 1 | 
| ZERO_OR_MORE | 0 / 整数最大值 | 
| ONE_OR_MORE | 1 / 整数 MAX | 
| legacy annotation不支持定义最小 ARITY。 | 
- 
Programmatic 
- 
Annotation 
- 
Legacy Annotation 
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 个参数。如下所示 引发特殊异常 TooManyArgumentsOptionException 和 NotEnoughArgumentsOptionException 以指示 arity 不匹配。
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.