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()

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.