在Java中是否有一种声明方法参数的方式,它是某种集合,但具有有限的大小?
例如,类似于:
public Car(String colour, Wheel[4])
建议可以根据颜色和4个轮子来构造一辆车。(显然,通过更改方法以枚举4个轮子作为单独的参数可以实现这个特定的示例,但这不具有可扩展性)
似乎这些约束条件应该可以通过方法头来表达,但我无法想出Java如何允许它。
不,类型系统中没有任何允许这样做的内容。当然,您可以在执行时进行验证 - 这通常是必须要做的,否则语言很难确保数组的长度完全正确。 (像.NET中的代码合同项目允许表达这种事情,但它并不是语言本身的一部分......因此不需要精确的规范。)
Wheel[4]
包装在新类中。不行。在运行时检查参数以快速失败:
public Car(String colour, Wheel[] wheels){
if (wheels == null)
throw new NullPointerException("The wheels is null.");
if (wheels.length != 4)
throw new IllegalArgumentException("The length of wheels is "+wheels.length);
...
}
@Requires("wheels.length == 4")
public Car(String colour, Wheel[] wheels)