Konversi Kotlin Array ke Java varargs


Jawaban:


231

Anda harus menggunakan operator penyebaran yang terlihat seperti ini: *
Operator penyebaran harus ditempatkan di depan argumen array:

antMatchers(*angularRoutings)

Untuk informasi lebih lanjut, lihat dokumentasi :

Saat kita memanggil vararg-fungsi, kita bisa mengirimkan argumen satu per satu, misalnya asList(1, 2, 3), atau, jika kita sudah memiliki sebuah array dan ingin meneruskan isinya ke fungsi, kita menggunakan operator sebar (awali array dengan *):

Harap dicatat bahwa operator sebaran hanya ditentukan untuk larik, dan tidak dapat digunakan pada daftar secara langsung. Saat berurusan dengan daftar, gunakan misalnya toTypedArray()untuk mengubahnya menjadi array:

 *list.toTypedArray()

Dan bagaimana cara mengubahnya kembali?
lacas

@Iacas Apa yang Anda maksud dengan "mengkonversi kembali"? A varargmengharapkan elemen individu, dan *arraymerupakan cara Kotlin untuk mengatakan "perlakukan array ini sebagai elemen individu untuk tujuan itu". Di dalam vararg-fungsi varargparameter akan menjadi sebuah array. Untuk mengonversi elemen individu menjadi larik, Anda dapat menggunakan arrayOf(...), tetapi Anda tidak membutuhkannya dalam kasus ini.
Dario Seidl

3
Perhatikan bahwa ini memiliki penalti performa yang sangat tinggi. sites.google.com/a/athaydes.com/renato-athaydes/posts/… periksa Varargs, atau medium.com/@BladeCoder/…
svkaka

Apakah ada cara untuk menghindari penggunaan operator sebaran dan meneruskan beberapa larik atau daftar ke metode yang menerima vararg?
Wackaloon

@DarioSeidl Maksudnya: Bagaimana jika kita memiliki vararg string, dan kita ingin meneruskan ke fungsi yang mengharapkan array string?
Pengembang android
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.