Chuyển đổi mảng Kotlin sang Java varargs


Câu trả lời:


231

Bạn nên sử dụng toán tử spread trông giống như sau: *
Toán tử spread cần được đặt trước đối số mảng:

antMatchers(*angularRoutings)

Để biết thêm thông tin, hãy xem tài liệu :

Khi chúng ta gọi một hàm vararg, chúng ta có thể truyền từng đối số một, ví dụ asList(1, 2, 3), hoặc nếu chúng ta đã có một mảng và muốn truyền nội dung của nó vào hàm, chúng ta sử dụng toán tử spread (đặt tiền tố cho mảng bằng *):

Xin lưu ý rằng toán tử spread chỉ được xác định cho các mảng và không thể được sử dụng trực tiếp trên danh sách. Khi xử lý một danh sách, hãy sử dụng ví dụ: toTypedArray()để chuyển đổi nó thành một mảng:

 *list.toTypedArray()

Và làm thế nào để chuyển đổi trở lại?
lacas

@Iacas Bạn có nghĩa là gì khi "chuyển đổi trở lại"? A varargmong đợi các phần tử riêng lẻ và *arraylà cách Kotlin nói "coi mảng này như các phần tử riêng lẻ cho mục đích đó". Trong- varargfunction, varargtham số sẽ là một mảng. Để chuyển đổi các phần tử riêng lẻ thành một mảng, bạn có thể sử dụng arrayOf(...), nhưng bạn không cần điều đó trong trường hợp này.
Dario Seidl

3
Lưu ý rằng điều này có một hình phạt hiệu suất rất cao. sites.google.com/a/athaydes.com/renato-athaydes/posts/… kiểm tra Varargs hoặc medium.com/@BladeCoder/…
svkaka

Có cách nào để tránh sử dụng toán tử spread và chuyển một số mảng hoặc danh sách đến một phương thức chấp nhận varargkhông?
Wackaloon

@DarioSeidl Ý của anh ấy là: Điều gì sẽ xảy ra nếu chúng ta có varargs của chuỗi và chúng ta muốn chuyển đến một hàm mong đợi một mảng chuỗi?
nhà phát triển android
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.