"ฟื้นคืนชีพ" เป็นคีย์เวิร์ดชนิดพิเศษที่ช่วยให้นักพัฒนา Kotlin เข้าถึงข้อมูลที่เกี่ยวข้องกับคลาสในขณะใช้งานจริง "ฟื้นคืนชีพ" ใช้ได้เฉพาะกับ อินไลน์ ฟังก์ชั่น. เมื่อ "ฟื้นคืนชีพ" มีการใช้คีย์เวิร์ด คอมไพเลอร์จะคัดลอก bytecode ของฟังก์ชันไปยังทุกส่วนของโค้ดที่มีการเรียกใช้ฟังก์ชัน ด้วยวิธีนี้ ประเภททั่วไป T จะถูกกำหนดให้กับประเภทของค่าที่ได้รับเป็นอาร์กิวเมนต์
ตัวอย่าง
ในตัวอย่างนี้ เราจะมาดูกันว่า "ฟื้นคืนชีพ" มีประโยชน์ในการใช้โค้ดของเราซ้ำ และใช้ฟังก์ชันเดียวกันเพื่อดำเนินการประเภทเดียวกันโดยไม่คำนึงถึงอาร์กิวเมนต์ที่ส่งผ่าน
สำหรับตัวอย่างนี้ เราได้สร้างฟังก์ชัน Inline และกำลังส่ง "reified" ทั่วไป อาร์กิวเมนต์ T และจาก main() ของ Kotlin เรากำลังเรียก myExample() หลายครั้งด้วยข้อโต้แย้งที่แตกต่างกัน
// Declaring Inline function inline fun <reified T> myExample(name: T) { println("\nName of your website -> "+name) println("\nType of myClass: ${T::class.java}") } fun main() { // calling func() with String myExample<String>("www.tutorialspoint.com") // calling func() with Int value myExample<Int>(100) // calling func() with Long value myExample<Long>(1L) }
ผลลัพธ์
มันจะสร้างผลลัพธ์ต่อไปนี้ -
Name of your website -> www.tutorialspoint.com Type of myClass: class java.lang.String Name of your website -> 100 Type of myClass: class java.lang.Integer Name of your website -> 1 Type of myClass: class java.lang.Long