đ Kotlin Reflection: āĻŽāĻāĻ-āĻŦাāύ্āϧāĻŦ āĻŦ্āϝাāĻ্āϝা! đ§ ✨
đ Kotlin Reflection: āĻŽāĻāĻ-āĻŦাāύ্āϧāĻŦ āĻŦ্āϝাāĻ্āϝা! đ§ ✨
āϤুāĻŽি āĻি āĻāĻāύো āĻেāĻŦেāĻো?
đ āĻāĻāĻা āĻ্āϞাāϏেāϰ āϏāĻŦ āĻĢাংāĻļāύ āĻāĻŦং āĻĒ্āϰোāĻĒাāϰ্āĻি āĻĒ্āϰোāĻ্āϰাāĻŽ āϰাāύāĻাāĻāĻŽে āĻŦেāϰ āĻāϰāϤে āĻĒাāϰāϞে āĻেāĻŽāύ āĻšāϤো?
đ āĻোāύো āĻ
āĻŦāĻেāĻ্āĻেāϰ āĻাāĻāĻĒ āύা āĻেāύেāĻ āϏেāĻাāϰ āĻĢাংāĻļāύ āĻāϞ āĻāϰāϤে āĻĒাāϰāϞে āĻেāĻŽāύ āĻšāϤো?
đ āĻĒ্āϰোāĻ্āϰাāĻŽ āύিāĻেāĻ āύিāĻেāϰ āĻোāĻĄ āϏāĻŽ্āĻĒāϰ্āĻে āĻাāύāϤে āĻĒাāϰāϞে āĻেāĻŽāύ āĻšāϤো?
đ¤ āĻāĻ āϏāĻŦ āĻিāĻুāϰ āĻāϤ্āϤāϰ āĻšāϞো Reflection!
āĻāĻ āĻāĻŽāϰা Kotlin Reflection āϏāĻŽ্āĻĒāϰ্āĻে āĻŽāĻāĻ-āĻŦাāύ্āϧāĻŦ, āĻāĻāĻĻāĻŽ āϏāĻšāĻ āĻাāώাā§ āĻļিāĻāĻŦো! đ
đ Reflection āĻী? (āĻāĻāĻĻāĻŽ āϏāĻšāĻ āĻাāώাā§) đ
Reflection āĻšāϞো āĻāĻāĻা āĻĒ্āϰোāĻ্āϰাāĻŽ āϝāĻāύ āϰাāύāĻাāĻāĻŽে āύিāĻেāĻ āύিāĻেāϰ āĻ্āϞাāϏ, āĻ āĻŦāĻেāĻ্āĻ, āĻĢাংāĻļāύ āĻŦা āĻĒ্āϰোāĻĒাāϰ্āĻিāĻুāϞো āϏāĻŽ্āĻĒāϰ্āĻে āĻাāύāϤে āĻĒাāϰে āĻāĻŦং āĻĒāϰিāĻŦāϰ্āϤāύ āĻāϰāϤে āĻĒাāϰে! đ¤¯
āϤুāϞāύা: āĻŽāύে āĻāϰো, āϤুāĻŽি āĻāĻāĻা āĻাāĻĻুāϰ āĻā§āύা (Reflection) āϧāϰāϞে, āĻāϰ āϏেāĻা āϤোāĻŽাāϰ āϏāĻŽ্āĻĒāϰ্āĻে āϏāĻŦāĻিāĻু āĻŦāϞে āĻĻিāϞো! đ˛
đ āϤুāĻŽি āύিāĻেāϰ āύাāĻŽ, āĻেāĻšাāϰা, āĻাā§েāϰ āϰং, āϞāĻŽ্āĻŦা-āĻাāĻো āϏāĻŦ āĻাāύāϤে āĻĒাāϰāĻো!
đ āĻāϰ āĻŽāĻাāϰ āĻŦিāώā§, āϤুāĻŽি āĻā§āύাāϰ āĻেāϤāϰেāϰ āύিāĻেāϰ āĻেāĻšাāϰা āĻĒāϰিāĻŦāϰ্āϤāύāĻ āĻāϰāϤে āĻĒাāϰāĻো! đ˛
āĻāĻāĻāĻাāĻŦে, Kotlin Reflection āĻĒ্āϰোāĻ্āϰাāĻŽāĻে āύিāĻেāϰ āĻ্āϞাāϏ, āĻĢাংāĻļāύ, āĻĒ্āϰোāĻĒাāϰ্āĻি āϏāĻŽ্āĻĒāϰ্āĻে āĻাāύāϤে āĻāĻŦং āĻĒāϰিāĻŦāϰ্āϤāύ āĻāϰāϤে āĻĻেā§!
đ Reflection āĻীāĻাāĻŦে āĻাāĻ āĻāϰে? (Step-by-Step) đ
đ Step 1: āĻāĻāĻা āĻ্āϞাāϏ āϏāĻŽ্āĻĒāϰ্āĻে āĻাāύা đ️
đ ::class āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰে āĻāĻŽāϰা āĻāĻāĻা āĻ
āĻŦāĻেāĻ্āĻেāϰ āĻ্āϞাāϏ āĻাāύāϤে āĻĒাāϰি!
class Person(val name: String, val age: Int)
fun main() {
val person = Person("Araf", 25)
// Reflection āĻĻিā§ে āĻ্āϞাāϏ āϏāĻŽ্āĻĒāϰ্āĻে āĻাāύা
val personClass = person::class
println("Class Name: ${personClass.simpleName}") // đš Output: Class Name: Person
}
đ Step 2: āĻāĻāĻা āĻ্āϞাāϏেāϰ āϏāĻŦ āĻĒ্āϰোāĻĒাāϰ্āĻি āĻāĻŦং āĻŽেāĻĨāĻĄ āĻুঁāĻে āĻŦেāϰ āĻāϰা đ§
đ memberProperties āĻāĻŦং memberFunctions āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāϞে, āĻāĻāĻা āĻ্āϞাāϏেāϰ āϏāĻŦ āĻĒ্āϰোāĻĒাāϰ্āĻি āĻāĻŦং āĻĢাংāĻļāύ āϞিāϏ্āĻ āĻŦেāϰ āĻāϰা āϝাā§!
import kotlin.reflect.full.*
class Car(val brand: String, val model: String) {
fun drive() {
println("Driving...")
}
}
fun main() {
val carClass = Car::class
// đš āϏāĻŦ āĻĒ্āϰোāĻĒাāϰ্āĻি āĻŦেāϰ āĻāϰা
println("Properties: ${carClass.memberProperties.map { it.name }}")
// Output: Properties: [brand, model]
// đš āϏāĻŦ āĻĢাংāĻļāύ āĻŦেāϰ āĻāϰা
println("Functions: ${carClass.memberFunctions.map { it.name }}")
// Output: Functions: [drive]
}
āϤুāϞāύা: āĻāĻা āĻ িāĻ āϝেāύ āĻāĻāĻা āĻŦāĻā§েāϰ āϏূāĻিāĻĒāϤ্āϰ āĻĻেāĻে āĻŦāϞে āĻĻেā§া—āĻŦāĻā§েāϰ āĻোāύ āĻোāύ āĻ āϧ্āϝাā§ āĻāĻে! đ
đ Step 3: āϰাāύāĻাāĻāĻŽে āĻĢাংāĻļāύ āĻāϞ āĻāϰা (Invoke) đ
đ call() āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰে, āĻāĻāĻা āĻĢাংāĻļāύ āϰাāύāĻাāĻāĻŽে āĻāϞ āĻāϰা āϝাā§!
import kotlin.reflect.full.*
class Robot {
fun greet() {
println("Hello, I am a Robot! đ¤")
}
}
fun main() {
val robot = Robot()
val function = robot::class.memberFunctions.find { it.name == "greet" }
function?.call(robot) // đš Output: Hello, I am a Robot! đ¤
}
āϤুāϞāύা: āĻŽāύে āĻāϰো, āϤুāĻŽি āĻāĻে āĻĨেāĻে āύা āĻেāύেāĻ āĻāĻāĻা āĻাāĻĻুāϰ āĻŦোāϤাāĻŽ āĻেāĻĒে āĻĻিāϞা, āĻāϰ āϏেāĻা āĻাāĻ āĻāϰāϞো! đĒ
đ Step 4: āϰাāύāĻাāĻāĻŽে āĻĒ্āϰোāĻĒাāϰ্āĻিāϰ āĻŽাāύ āĻĒāϰিāĻŦāϰ্āϤāύ āĻāϰা đ ️
đ call() āĻĻিā§ে āĻĒ্āϰোāĻĒাāϰ্āĻিāϰ āĻŽাāύ āĻĒā§া āĻāĻŦং āϏেāĻ āĻāϰা āϝাā§!
import kotlin.reflect.full.*
import kotlin.reflect.jvm.isAccessible
class Animal(var name: String)
fun main() {
val animal = Animal("Tiger")
// đš āĻĒ্āϰোāĻĒাāϰ্āĻি āĻুঁāĻে āĻŦেāϰ āĻāϰা
val nameProperty = animal::class.memberProperties.find { it.name == "name" }
// đš āϰাāύāĻাāĻāĻŽে āĻĒ্āϰোāĻĒাāϰ্āĻিāϰ āĻŽাāύ āĻĻেāĻা
println("Before: ${nameProperty?.call(animal)}") // Output: Before: Tiger
// đš āϰাāύāĻাāĻāĻŽে āĻĒ্āϰোāĻĒাāϰ্āĻিāϰ āĻŽাāύ āĻĒāϰিāĻŦāϰ্āϤāύ āĻāϰা
val mutableProperty = animal::class.members.find { it.name == "name" } as? kotlin.reflect.KMutableProperty1<Animal, String>
mutableProperty?.setter?.call(animal, "Lion")
println("After: ${nameProperty?.call(animal)}") // Output: After: Lion
}
āϤুāϞāύা: āĻŽāύে āĻāϰো, āϤুāĻŽি āĻাāϰāĻ āύাāĻŽ āĻĒāϰিāĻŦāϰ্āϤāύ āĻāϰে āĻĻিāϞা, āĻিāύ্āϤু āϤাāϰা āĻŦুāĻāϤেāĻ āĻĒাāϰāϞ āύা! đ
đ āĻেāύ Reflection āĻĻāϰāĻাāϰ? (āĻŦ্āϝāĻŦāĻšাāϰ)
✅ 1️⃣ āĻĄাāĻা āĻ্āϞাāϏ āĻĨেāĻে āĻĄাāĻা āĻেāύেāϰেāĻ āĻāϰা đ
đ JSON āĻŦা XML āĻĢāϰāĻŽ্āϝাāĻে āĻ
āĻোāĻŽেāĻিāĻ āĻĄাāĻা āĻŽ্āϝাāĻĒিং āĻāϰা āϝাā§!
✅ 2️⃣ Dependency Injection (DI) đ§
đ āĻĢ্āϰেāĻŽāĻā§াāϰ্āĻāĻুāϞো (āϝেāĻŽāύ Dagger, Koin) āϰাāύāĻাāĻāĻŽে āĻ্āϞাāϏ āϤৈāϰি āĻāϰāϤে āĻĒাāϰে!
✅ 3️⃣ āĻেāϏ্āĻিং āĻāĻŦং āĻŽāĻিং đ§Ē
đ āĻেāϏ্āĻিং-āĻ āϰাāύāĻাāĻāĻŽে āĻĒ্āϰাāĻāĻেāĻ āĻŽেāĻĨāĻĄ āĻ āĻĒ্āϰোāĻĒাāϰ্āĻি āĻāĻ্āϏেāϏ āĻāϰা āϝাā§!
✅ 4️⃣ āĻĒ্āϞাāĻিāύ āĻāĻŦং āϞাāĻāĻŦ্āϰেāϰি āĻĄেāĻেāϞāĻĒāĻŽেāύ্āĻ đĻ
đ āϞাāĻāĻŦ্āϰেāϰি āĻĄেāĻেāϞāĻĒাāϰāϰা āϰাāύāĻাāĻāĻŽে āĻ্āϞাāϏেāϰ āϏ্āĻ্āϰাāĻāĻাāϰ āĻĒāϰিāĻŦāϰ্āϤāύ āĻāϰāϤে āĻĒাāϰে!
❌ Reflection-āĻāϰ āĻিāĻু āϏীāĻŽাāĻŦāĻĻ্āϧāϤা! (Limitations of Reflection)
❌ āϰাāύāĻাāĻāĻŽ āĻĒাāϰāĻĢāϰāĻŽ্āϝাāύ্āϏ āĻāĻŽিā§ে āĻĻিāϤে āĻĒাāϰে! đ
đ āĻাāϰāĻŖ, Reflection āĻ
āύেāĻ āĻŦেāĻļি āĻĒ্āϰāϏেāϏিং āĻļāĻ্āϤি āĻāϰāĻ āĻāϰে!
❌ āĻĒ্āϰাāĻāĻেāĻ āĻĄাāĻা āĻāĻ্āϏেāϏ āĻāϰāϞে āύিāϰাāĻĒāϤ্āϤা āĻুঁāĻি āĻĨাāĻে! đ
đ āĻুāϞāĻাāĻŦে āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāϞে āϏিāĻিāĻāϰিāĻি āĻŦ্āϰেāĻ āĻšāϤে āĻĒাāϰে!
❌ āĻ
āĻĒ্āĻিāĻŽাāĻāĻ āĻāϰা āĻāĻ িāύ! ⚙️
đ āĻāĻŽ্āĻĒাāĻāϞ-āĻাāĻāĻŽে āĻāϰ āĻŦ্āϝāĻŦāĻšাāϰ āϏāĻšāĻে āϧāϰা āϝাā§ āύা!
đ¯ āϏংāĻ্āώেāĻĒে: Reflection āĻāĻ āĻāĻĨাā§ āĻী?
đš Reflection āĻšāϞো Kotlin-āĻāϰ āĻāĻŽāύ āĻāĻāĻা āĻĢিāĻাāϰ, āϝা āĻĒ্āϰোāĻ্āϰাāĻŽāĻে āύিāĻে āϏāĻŽ্āĻĒāϰ্āĻে āĻাāύāϤে āĻ āĻĒāϰিāĻŦāϰ্āϤāύ āĻāϰāϤে āĻĻেā§! đ¤
đš āĻāĻা āĻĻিā§ে āϰাāύāĻাāĻāĻŽে āĻ্āϞাāϏেāϰ āĻŽেāĻĨāĻĄ, āĻĒ্āϰোāĻĒাāϰ্āĻি, āĻāĻŦং āĻāύāϏ্āĻ্āϰাāĻ্āĻāϰ āĻĄাāĻāύাāĻŽিāĻāĻাāĻŦে āĻāĻ্āϏেāϏ āĻāϰা āϝাā§! đ ️
đš āĻāĻা Dependency Injection, JSON Mapping, āĻেāϏ্āĻিং, āĻāĻŦং āĻĒ্āϞাāĻিāύ āĻĄেāĻেāϞāĻĒāĻŽেāύ্āĻ-āĻ āĻŦ্āϝāĻŦāĻšৃāϤ āĻšā§! đ
𤊠āĻļেāώ āĻāĻĨা
āĻāĻāύ āϤুāĻŽি Kotlin Reflection āϏāĻŽ্āĻĒāϰ্āĻে āĻাāύো! đ
đ āϝāĻĻি āĻĒ্āϰāĻļ্āύ āĻĨাāĻে, āϤাāĻšāϞে āĻিāĻ্āĻাāϏা āĻāϰো! đ
Comments
Post a Comment