🎯 SAM Conversions در «Kotlin» یکی از قابلیتهای کلیدی برای تعامل با «Java» است.
اگر یک «interface» فقط یک متد انتزاعی داشته باشد (مثل «Runnable» یا «OnClickListener»)، میتوانید بهجای نوشتن یک کلاس ناشناس، مستقیماً یک «lambda» بدهید.
«Kotlin» خودش هم از نسخه ۱.۴ از «fun interface» پشتیبانی میکند که دقیقاً همین رفتار را دارد.
📌 کاربرد واقعی:
در «Android» هنگام تنظیم «OnClickListener» برای یک دکمه، بهجای کدهای طولانی از «SAM conversion» استفاده میکنیم.
همینطور در «Coroutines» برای «Runnable»های قدیمی.
🔧 مثال عملی:
✅ توضیح کد:
با «fun interface» یک «interface» تک متدی تعریف کردیم. سپس بهجای پیادهسازی با «object expression»، مستقیماً یک «lambda» به «StringTransformer» نسبت دادیم. «Kotlin» خودش «lambda» را به نمونهای از «interface» تبدیل میکند. این کار خوانایی کد را افزایش میدهد.
💡 نکته کاربردی:
برای «API»هایی که از «Java» میآیند (مثل «View.OnClickListener»)، «SAM conversion» به صورت خودکار کار میکند. اما اگر «interface» خودتان را در «Kotlin» تعریف میکنید، حتماً از «fun interface» استفاده کنید تا این قابلیت را داشته باشید.
---
#Codeit #Android #Kotlin #Jetpack #SAM #FunctionalInterface #Lambda #CleanCode
🌐 Codeit → https://code-it.ir
━━━━━━━━━━━━━━━
@CodeitMobile
اگر یک «interface» فقط یک متد انتزاعی داشته باشد (مثل «Runnable» یا «OnClickListener»)، میتوانید بهجای نوشتن یک کلاس ناشناس، مستقیماً یک «lambda» بدهید.
«Kotlin» خودش هم از نسخه ۱.۴ از «fun interface» پشتیبانی میکند که دقیقاً همین رفتار را دارد.
📌 کاربرد واقعی:
در «Android» هنگام تنظیم «OnClickListener» برای یک دکمه، بهجای کدهای طولانی از «SAM conversion» استفاده میکنیم.
همینطور در «Coroutines» برای «Runnable»های قدیمی.
🔧 مثال عملی:
// تعریف یک fun interface با یک متد
fun interface StringTransformer {
fun transform(input: String): String
}
// استفاده از SAM conversion با lambda
val toUpper = StringTransformer { it.uppercase() }
val result = toUpper.transform("hello")
println(result) // HELLO
✅ توضیح کد:
با «fun interface» یک «interface» تک متدی تعریف کردیم. سپس بهجای پیادهسازی با «object expression»، مستقیماً یک «lambda» به «StringTransformer» نسبت دادیم. «Kotlin» خودش «lambda» را به نمونهای از «interface» تبدیل میکند. این کار خوانایی کد را افزایش میدهد.
💡 نکته کاربردی:
برای «API»هایی که از «Java» میآیند (مثل «View.OnClickListener»)، «SAM conversion» به صورت خودکار کار میکند. اما اگر «interface» خودتان را در «Kotlin» تعریف میکنید، حتماً از «fun interface» استفاده کنید تا این قابلیت را داشته باشید.
---
#Codeit #Android #Kotlin #Jetpack #SAM #FunctionalInterface #Lambda #CleanCode
🌐 Codeit → https://code-it.ir
━━━━━━━━━━━━━━━
@CodeitMobile
🔥1