Java 调用需要可变参数的方法
Java invoking method requiring vararg
所以我大致有这样的方法:
foo(Boolean a, Boolean b, Integer... excess)
并且我想使用至少包含前 2 个布尔值而不总是其余整数的参数数组来调用它。我已经尝试创建对象数组并将其放在末尾,但随后它抛出异常,因为它无法将对象数组转换为整数,不知道为什么所以我问,有没有简单的方法可以做到这一点?
在你的例子中,你定义了如下的 foo 方法。
void foo(Boolean a, Boolean b, Integer... excess) {
}
由于可变参数可以采用零个或多个参数,因此您可以调用它来传递或不传递整数数组。
示例 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);
}
}
我建议您阅读可变参数 here。
您对 mandatory 和 optional 参数的方法声明是正确的,但实际上如果您想使用 object array 作为可选参数部分,那么你应该使用 definin Object... args
作为方法的最终参数。
在你的问题中你说你试图创建对象数组并将其作为最终参数传递给方法但是你的声明是 Integer... args
相当于 Integer[] args
所以你必须声明并将 Integer[]
传递给该方法。
所以我大致有这样的方法:
foo(Boolean a, Boolean b, Integer... excess)
并且我想使用至少包含前 2 个布尔值而不总是其余整数的参数数组来调用它。我已经尝试创建对象数组并将其放在末尾,但随后它抛出异常,因为它无法将对象数组转换为整数,不知道为什么所以我问,有没有简单的方法可以做到这一点?
在你的例子中,你定义了如下的 foo 方法。
void foo(Boolean a, Boolean b, Integer... excess) {
}
由于可变参数可以采用零个或多个参数,因此您可以调用它来传递或不传递整数数组。
示例 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);
}
}
我建议您阅读可变参数 here。
您对 mandatory 和 optional 参数的方法声明是正确的,但实际上如果您想使用 object array 作为可选参数部分,那么你应该使用 definin Object... args
作为方法的最终参数。
在你的问题中你说你试图创建对象数组并将其作为最终参数传递给方法但是你的声明是 Integer... args
相当于 Integer[] args
所以你必须声明并将 Integer[]
传递给该方法。