将Kotlin数组转换为Java varargs


Answers:


231

您应该使用如下所示的散布运算符*
散布运算符需要放在数组参数的前面:

antMatchers(*angularRoutings)

有关更多信息,请参见文档

当我们调用vararg-function时,我们可以一个接一个地传递参数,例如asList(1, 2, 3),或者,如果我们已经有一个数组并将其内容传递给该函数,则可以使用spread运算符(使用前缀数组*):

请注意,传播运算符仅为数组定义,不能直接在列表上使用。处理列表时,使用例如toTypedArray()将其转换为数组:

 *list.toTypedArray()

以及如何转换回来?
lacas '18

@Iacas“转换回”是什么意思?a vararg期望单个元素,这*array是Kotlin所说的“为此目的将该数组作为单个元素进行处理”。在vararg-function 内,该vararg参数始终是一个数组。要将单个元素转换为数组,可以使用arrayOf(...),但在这种情况下不需要。
达里奥·塞德尔

3
请注意,这会带来非常高的性能损失。sites.google.com/a/athaydes.com/renato-athaydes/posts/…检查Varargs或medium.com/@BladeCoder/…–
svkaka

有什么方法可以避免使用传播运算符,并将一些数组或列表传递给可以接受的方法vararg
Wackaloon

@DarioSeidl他的意思是:如果我们有字符串可变参数,并且希望传递给需要字符串数组的函数该怎么办?
Android开发人员
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.