Converter Kotlin Array em Java varargs

Respostas:

233

Você deve usar o operador spread, que se parece com isto: *
O operador spread precisa ser colocado na frente do argumento da matriz:

antMatchers(*angularRoutings)

Para mais informações, consulte a documentação :

Quando chamamos uma varargfunção -função, podemos passar os argumentos um por um, por exemplo asList(1, 2, 3), ou, se já tivermos um array e quisermos passar seu conteúdo para a função, usamos o operador spread (prefixe o array com *):

Observe que o operador de propagação é definido apenas para matrizes e não pode ser usado diretamente em uma lista. Ao lidar com uma lista, use, por exemplo, toTypedArray()para transformá-la em um array:

 *list.toTypedArray()
s1m0nw1
fonte
E como converter de volta?
lacas
@Iacas O que você quer dizer com "converter de volta"? A varargespera elementos individuais e *arrayé a maneira Kotlin de dizer "trate este array como elementos individuais para esse propósito". Dentro da varargfunção -função, o varargparâmetro será um array de qualquer maneira. Para converter elementos individuais em um array, você pode usar arrayOf(...), mas não precisa disso neste caso.
Dario Seidl
3
Observe que isso tem uma penalidade de desempenho muito alto. sites.google.com/a/athaydes.com/renato-athaydes/posts/… verifique Varargs ou medium.com/@BladeCoder/…
svkaka
Existe alguma maneira de evitar o uso do operador de propagação e passar algum array ou lista para um método que aceita vararg?
Wackaloon
@DarioSeidl Ele quer dizer: E se tivermos varargs de string e quisermos passar para uma função que espera um array de strings?
desenvolvedor Android de