ฉันจะแปลง Kotlin ของฉันArrayเป็น varargs Java ได้String[]อย่างไร
val angularRoutings =
arrayOf<String>("/language", "/home")
// this doesn't work
web.ignoring().antMatchers(angularRoutings)
ฉันจะแปลง Kotlin ของฉันArrayเป็น varargs Java ได้String[]อย่างไร
val angularRoutings =
arrayOf<String>("/language", "/home")
// this doesn't work
web.ignoring().antMatchers(angularRoutings)
คำตอบ:
คุณควรใช้ตัวดำเนินการกระจายซึ่งมีลักษณะดังนี้: *
ตัวดำเนินการกระจายจะต้องวางไว้หน้าอาร์กิวเมนต์อาร์เรย์:
antMatchers(*angularRoutings)
สำหรับข้อมูลเพิ่มเติมโปรดดูเอกสารประกอบ :
เมื่อเราเรียกใช้ a-
varargfunction เราสามารถส่งผ่านอาร์กิวเมนต์ทีละตัวเช่นasList(1, 2, 3)หรือถ้าเรามีอาร์เรย์อยู่แล้วและต้องการส่งผ่านเนื้อหาไปยังฟังก์ชันเราจะใช้ตัวดำเนินการกระจาย (นำหน้าอาร์เรย์ด้วย*):
โปรดทราบว่าตัวดำเนินการกระจายถูกกำหนดไว้สำหรับอาร์เรย์เท่านั้นและไม่สามารถใช้กับรายการได้โดยตรง เมื่อจัดการกับรายการให้ใช้เช่นtoTypedArray()เพื่อแปลงเป็นอาร์เรย์:
*list.toTypedArray()
varargคาดหวังองค์ประกอบแต่ละรายการและ*arrayเป็นวิธีที่ Kotlin พูดว่า "ถือว่าอาร์เรย์นี้เป็นองค์ประกอบเดี่ยวสำหรับวัตถุประสงค์นั้น" ภายในvarargฟังก์ชันvarargพารามิเตอร์ก็จะเป็นอาร์เรย์อยู่ดี ในการแปลงแต่ละองค์ประกอบเป็นอาร์เรย์คุณสามารถใช้ได้arrayOf(...)แต่คุณไม่จำเป็นต้องใช้ในกรณีนี้
vararg?