数组可以作为参数传递给 Java 中带有变量参数的方法吗?
考虑以下方法:
class A { private String extraVar; public String myFormat(String format, Object ... args){ return String.format(format, extraVar, args); } }
目的是将 args 单独传递给 String.format,但正如 myFormat 对待的那样
Java 的 Varargs(变量参数)
Java 的语法糖 T... 对应于 T[]。根据Java语言规范(JLS 8.4.1),最终的形式参数可以是变量arity,它将其视为指定类型的数组。因此,可变数量方法接受可变数量的参数。此类方法的调用可以包含比形式参数更多的实际参数。
解决方案
为了实现所需的行为,可以将数组传递给具有可变参数的方法。基本原则是数组中的每个对象都作为单独的参数传递。
这是一个演示示例:
public static String ezFormat(Object... args) { String format = new String(new char[args.length]) .replace("", "[ %s ]"); return String.format(format, args); } public static void main(String... args) { System.out.println(ezFormat("A", "B", "C")); // prints "[ A ][ B ][ C ]" }
注意 String... 是相当于 String[].
Varargs陷阱
以上是Java 的变量参数 (Varargs) 可以接受数组作为参数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!