java方法参数可以是声明大小的集合吗?

时间:2011-02-05 08:46:19

标签: java oop

java中有没有办法声明一个方法参数,即某种集合,但是有限大小?

例如:

public Car(String colour, Wheel[4])

建议可以使用颜色和4个轮子构建汽车。 (显然,这个特殊的例子可以通过改变方法来实现,通过4个轮子作为单独的参数进行枚举,但是不能缩放)

似乎这些约束应该通过方法头表达,但我不能想到java会如何允许它。

4 个答案:

答案 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)