đ Kotlin Inline (Value) Class – Performance Boost āĻাā§াāĻ āĻ্āϞাāϏ āϰ্āϝাāĻĒিং! đ¯
đ Kotlin Inline (Value) Class – Performance Boost āĻাā§াāĻ āĻ্āϞাāϏ āϰ্āϝাāĻĒিং! đ¯
đ¤ āĻāĻāύো āĻāĻāύো āĻ্āϞাāϏ āϰ্āϝাāĻĒ āĻāϰāϤে āĻšā§, āĻিāύ্āϤু āϏāĻŽāϏ্āϝা āĻী?
✔️ āϝāĻāύ āĻāĻŽāϰা āĻোāύো āĻ
āĻŦāĻেāĻ্āĻ āϰ্āϝাāĻĒ āĻāϰি, āϤāĻāύ āĻ
āϤিāϰিāĻ্āϤ āĻŽেāĻŽোāϰি āĻāĻŦং āĻĒ্āϰāϏেāϏিং āĻাāĻāĻŽ āĻŦ্āϝ⧠āĻšā§।
✔️ āĻিāύ্āϤু Inline (Value) Class āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāϞে āϰ্āϝাāĻĒিং-āĻāϰ āĻĒাāϰāĻĢāϰāĻŽ্āϝাāύ্āϏ āĻĄ্āϰāĻĒ āĻাā§াāĻ āϏুāĻŦিāϧা āĻĒাāĻā§া āϝাā§!
đ āϏাāϧাāϰāĻŖ āĻ্āϞাāϏ āϰ্āϝাāĻĒিং āĻŦāύাāĻŽ Inline (Value) Class
❌ āϏাāϧাāϰāĻŖ āĻ্āϞাāϏ āϰ্āϝাāĻĒিং:
interface Greeter {
fun greet(): Unit
}
class MyGreeter(var myNameToday: String) : Greeter {
override fun greet() = println("Hello, $myNameToday!")
}
đ āĻāĻাāύে MyGreeter āύাāĻŽে āĻāĻāĻা āĻ্āϞাāϏ āϤৈāϰি āĻāϰেāĻি, āϝা āĻ
āϤিāϰিāĻ্āϤ āĻ
āĻŦāĻেāĻ্āĻ āĻ্āϰিā§েāĻ āĻāϰāĻŦে!
✅ Inline (Value) Class āĻĻিā§ে āϰ্āϝাāĻĒিং:
@JvmInline
value class BadDayGreeter(val greeter: Greeter) : Greeter {
override fun greet() {
greeter.greet()
println("Having a bad day, huh?")
}
}
đ āĻāĻাāύে BadDayGreeter āĻāϏāϞে āĻāϞাāĻĻা āĻ
āĻŦāĻেāĻ্āĻ āϤৈāϰি āĻāϰāĻŦে āύা!
đ āĻāĻি Runtime-āĻ āĻļুāϧুāĻŽাāϤ্āϰ Greeter āĻāύ্āĻাāϰāĻĢেāϏ āĻšিāϏেāĻŦে āĻাāĻ āĻāϰāĻŦে!
đ Inline (Value) Class-āĻāϰ āĻĒ্āϰāϧাāύ āĻŦৈāĻļিāώ্āĻ্āϝ:
1️⃣ āĻļুāϧুāĻŽাāϤ্āϰ ā§§āĻি āĻĒ্āϰাāĻāĻŽাāϰি āĻāύāϏ্āĻ্āϰাāĻ্āĻāϰ āĻĒ্āϝাāϰাāĻŽিāĻাāϰ āĻĨাāĻāϤে āĻĒাāϰে!
2️⃣ āĻāύ্āĻাāϰāĻĢেāϏ āĻāĻŽāĻĒ্āϞিāĻŽেāύ্āĻ āĻāϰāϤে āĻĒাāϰে!
3️⃣ āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄ (Backing field) āĻĨাāĻা āϝাā§ āύা!
4️⃣ final āĻšā§, āĻŽাāύে āĻ
āύ্āϝ āĻোāύো āĻ্āϞাāϏ āĻāĻ্āϏāĻেāύ্āĻĄ āĻāϰāϤে āĻĒাāϰāĻŦে āύা!
5️⃣ āĻĒাāϰāĻĢāϰāĻŽ্āϝাāύ্āϏ āĻ
āĻĒāĻিāĻŽাāĻāĻāĻĄ, āĻাāϰāĻŖ āĻāĻŽ্āĻĒাāĻāϞাāϰ āĻŦেāϏ āĻাāĻāĻĒ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰে!
đ Inline (Value) Class-āĻāϰ āĻāύ্āĻাāϰāĻĢেāϏ āĻāĻŽāĻĒ্āϞিāĻŽেāύ্āĻ āĻāϰা!
@JvmInline
value class Name(val name: String) : Greeter {
init {
require(name.isNotEmpty()) { "An empty name is absurd!" }
}
// val withABackingField: String = "Not allowed"
var length: Int
get() = name.length
set(value) { println("What do you expect to happen?") }
override fun greet() { println("Hello, $name") }
}
✅ āĻāĻাāύে Name āĻ্āϞাāϏ Greeter āĻāύ্āĻাāϰāĻĢেāϏ āĻāĻŽāĻĒ্āϞিāĻŽেāύ্āĻ āĻāϰāĻে!
✅ init āĻŦ্āϞāĻ āĻĻিā§ে āĻ্āϝাāϞিāĻĄেāĻļāύ āĻāϰা āĻšā§েāĻে!
đ Signature Clashing āĻ Name Mangling
Inline (Value) Class āĻĒ্āϰāĻৃāϤāĻĒāĻ্āώে āĻŦেāϏ āĻাāĻāĻĒ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰে, āϤাāĻ āϝāĻĻি āĻāĻāĻ āύাāĻŽে āĻĻুāĻāĻা āĻĢাংāĻļāύ āĻĨাāĻে, āϤাāĻšāϞে Signature Clash āĻšāϤে āĻĒাāϰে!
fun foo(name: Name) { ... }
fun foo(name: String) { ... }
đ āĻāĻŽ্āĻĒাāĻāϞাāϰ āĻāĻে āύাāĻŽ āĻĒāϰিāĻŦāϰ্āϤāύ (Name Mangling) āĻāϰে:
public final void foo-<stable-hashcode>(name: String) { ... }
public final void foo(name: String) { ... }
❌ Java āĻĨেāĻে āĻāϞ āĻāϰāϞে āϏāĻŽāϏ্āϝা āĻšāϤে āĻĒাāϰে!
✅ āϏāĻŽাāϧাāύ – @JvmName āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰুāύ!
@JvmName("fooName")
fun foo(name: Name) { ... }
đ āĻāĻāύ Java āĻĨেāĻে fooName(name: String) āύাāĻŽে āĻāϞ āĻāϰা āϝাāĻŦে! đ¯
đ¯ āϏংāĻ্āώেāĻĒে:
✅ Inline (Value) Class āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄ āĻাā§াāĻ āĻাāĻ āĻāϰে, āĻĒাāϰāĻĢāϰāĻŽ্āϝাāύ্āϏ āĻাāϞো āĻĨাāĻে!
✅ āĻāύ্āĻাāϰāĻĢেāϏ āĻāĻŽāĻĒ্āϞিāĻŽেāύ্āĻ āĻāϰāϤে āĻĒাāϰে!
✅ Signature Clash āĻā§াāϤে @JvmName āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰুāύ!
đĨ āĻāĻāύ āĻāĻĒāύি āϏ্āĻŽাāϰ্āĻāϞি Inline (Value) Class āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāϤে āĻĒাāϰāĻŦেāύ! đ
Comments
Post a Comment