需要vararg的Java调用方法

时间:2019-02-02 12:49:25

标签: java variadic-functions invoke

所以我差不多有这样的方法:

foo(Boolean a, Boolean b, Integer... excess)

,并且我想使用至少包含前两个布尔值且不总是其余整数的参数数组来调用它。我尝试过创建对象数组并将其放在最后,但是随后抛出Exception cuz,它无法将对象数组转换为整数,不知道为什么,所以我问,有什么简单的方法吗?

2 个答案:

答案 0 :(得分:1)

您的强制 optional 参数的方法声明是正确的,但实际上,如果您想对可选参数使用 object array 那么您应该使用definin Object... args作为方法的最终参数。

在您的问题中,您说您尝试创建对象数组并将其作为最终参数传递给方法,但您的声明为Integer... args,它等效于Integer[] args,因此您必须声明并传递方法的Integer[]

答案 1 :(得分:0)

在您的情况下,您定义了foo方法,如下所示。

void foo(Boolean a, Boolean b, Integer... excess) {

}

由于varargs可以接受零个或多个参数,因此可以通过或不通过整数数组来调用它。

示例1:

Integer[] arr = { 2, 3, 5 };
foo(true, false, arr);

示例2

foo(true, false);

在下面的示例应用程序中查找。

public class App {

    private static void foo(Boolean a, Boolean b, Integer... excess) {

    }

    public static void main(String args[]) {
        Integer[] arr = { 2, 3, 5 };

        foo(true, false, arr);
        foo(true, false);
    }
}

我建议您阅读varargs here