java中有没有办法声明一个方法参数,即某种集合,但是有限大小?
例如:
public Car(String colour, Wheel[4])
建议可以使用颜色和4个轮子构建汽车。 (显然,这个特殊的例子可以通过改变方法来实现,通过4个轮子作为单独的参数进行枚举,但是不能缩放)
似乎这些约束应该通过方法头表达,但我不能想到java会如何允许它。
答案 0 :(得分:5)
不,类型系统中没有任何内容允许这样做。当然,您可以在执行时进行验证 - 这通常是您通常必须要做的事情,否则语言很难给出规则以确保数组的长度完全正确。 (像.NET中的代码契约这样的项目会允许表达这种事物,但这不是语言的一部分......因此不需要精确的规范。)
答案 1 :(得分:2)
您可以通过创建特定的List来将Wheel[4]
包装在新类中。
答案 2 :(得分:1)
没有。在运行时检查参数以快速失败:
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);
...
}
答案 3 :(得分:0)
现在你可以使用cofoja - http://code.google.com/p/cofoja/来解决这个问题以及其他类似的输入/输出限制。
@Requires("wheels.length == 4")
public Car(String colour, Wheel[] wheels)