我知道Java“...”数组参数语法可以接收数组作为参数,或者只是传递给方法的许多参数。然而,我注意到它对于集合也是如此:
public static void main(String[] args) {
Collection<Object> objects = new ArrayList<>();
test(objects);
}
public static void test (Object...objects) {
System.out.println("no compile errors");
}
这可以编译并运行,而无需我调用toArray()
方法。幕后发生了什么?此语法是否有其他“自动转换”方法?
顺便说一句,我正在使用 Java 1.7。
它不会将集合转换为数组。它将集合本身作为第一个 vararg 参数传递。因此,测试方法接收一个只有一个元素的数组,该元素就是 ArrayList。
通过替换可以轻松找到
System.out.println("no compile errors");
by
System.out.println(Arrays.toString(objects);
或者使用调试器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)