1

我想要一个抽象功能,例如

init(int... conditions);

使继承的类可以有多种初始化条件;可能有些类需要较少数量的参数,而其他类可能需要更多。

但是我希望像下面一样单独传递它们

init(arr[0], arr[1], arr[2]... arr[size-1]);

init(arr);

这种方法可行吗?如果没有,那么我应该更好地传递一个数组吗?


抱歉,我似乎造成了混乱。

我有一个大小为 n 的数组,它会有所不同。我不能硬编码传递参数,因为参数的数量是可靠的。我不想为不同版本的 init 方法进行函数重载,因为这将创建大约十几个不同版本的 init 方法。

4

2 回答 2

2

您不需要重载该方法。只需使用所谓的variable arguments. 从 1.5 版开始在 Java 中可用。例如:

public void init(int... conditions) { ... }

您可以通过两种方式使用该方法:

  1. 传递数组本身。像这样:

    初始化(数组);

  2. 传递每个数组元素。像这样:

    初始化(数组[0],数组[1],...数组[n]);

请注意,如果您希望此方法有其他参数,则应仅将它们放在方法签名中的变量参数之前。

于 2013-05-04T00:28:04.820 回答
1

您始终可以使用可变参数方法参数。实际上,它与您在上面发布的方法签名相同。

public void init(int... conditions){}

这使条件成为一个 int[],您可以对其进行迭代以获取您的 init 条件。

于 2013-05-04T00:25:48.387 回答