如何向带有String...可变参数签名的遗留方法传递字符串集合?
解决方法:将ArrayList传递给接受String...参数的方法
这问题我太熟了!Java里的可变参数String... input其实就是String[]数组的语法糖,编译器会把它当成数组来处理。所以你只需要把你的ArrayList<String>转换成String[]数组,就能直接传给callMethod了。
具体代码实现很简单:
ArrayList<String> strings = new ArrayList<>(); // 这里可以往集合里添加元素,比如 strings.add("test1"); // 把ArrayList转成String数组,传给callMethod callMethod(strings.toArray(new String[0]));
补充说明:
toArray(new String[0])这个写法的作用是让ArrayList返回一个刚好匹配集合大小的String[]数组。如果传入的数组长度不够,Java会自动创建一个新的合适长度的数组;用new String[0]是目前比较高效的写法,JVM会做优化,不用纠结数组长度的问题。- 如果你用的是Java 8及以上版本,也可以用Stream来转换,写法更简洁:
这个写法本质和上面的callMethod(strings.stream().toArray(String[]::new));toArray方法效果完全一致。
内容的提问来源于stack exchange,提问作者BamDoya
相关产品推荐
相关产品推荐

