🚀 فراخوانی کاتلین از جاوا – راهکارهای عملی برای پروژههای ترکیبی
یکی از قدرتهای کاتلین، همنشینی کامل با جاواست. اما وقتی از سمت جاوا میخواهید کد کاتلین صدا بزنید، باید نکاتی راجع به «Null Safety»، «Default Parameters» و «Companion Object» بدانید. 😎
🔹 چالش اصلی: کاتلین برای پارامترهای نالپذیر از نوع «String?» استفاده میکند، اما جاوا مفهومی به نام «Nullable» ندارد. کاتلین با حاشیهنویسی «@Nullable» و «@NotNull» این تفاوت را مدیریت میکند.
🔹 پارامترهای پیشفرض هم در جاوا وجود ندارند. برای اینکه کد کاتلین برای جاوا قابل استفاده باشد، باید از «@JvmOverloads» استفاده کنید تا overloadهای مختلف ساخته شوند.
🔹 مثال عملی: یک کلاس کاتلین با یک تابع و یک companion object داریم:
🔹 حالا در جاوا میتوانید اینطور صدا بزنید:
🔹 توضیح: «@JvmStatic» متد Companion را به عنوان یک متد استاتیک واقعی در جاوا در دسترس قرار میدهد. «@JvmOverloads» باعث میشود جاوا بتواند بدون پارامتر هم تابع را صدا بزند.
🔹 نکته حرفهای: برای فیلدهای «top-level» نیز از «@JvmField» استفاده کنید تا جاوا مستقیماً به آنها دسترسی داشته باشد. همچنین «@JvmName» برای تغییر نام متدهای کاتلین در خروجی جاوا کاربرد دارد.
🔥 گرفته اصلی: با این حاشیهنویسیها، کاتلین و جاوا میتوانند بدون هیچ دردی در یک پروژه کنار هم کار کنند. حواستان به نوعهای نالپذیر و پارامترهای پیشفرض باشد!
#Codeit #Android #Kotlin #Java #Interop #NullSafety #JvmOverloads #CompanionObject
🌐 Codeit → https://code-it.ir
━━━━━━━━━━━━━━━
@CodeitMobile
یکی از قدرتهای کاتلین، همنشینی کامل با جاواست. اما وقتی از سمت جاوا میخواهید کد کاتلین صدا بزنید، باید نکاتی راجع به «Null Safety»، «Default Parameters» و «Companion Object» بدانید. 😎
🔹 چالش اصلی: کاتلین برای پارامترهای نالپذیر از نوع «String?» استفاده میکند، اما جاوا مفهومی به نام «Nullable» ندارد. کاتلین با حاشیهنویسی «@Nullable» و «@NotNull» این تفاوت را مدیریت میکند.
🔹 پارامترهای پیشفرض هم در جاوا وجود ندارند. برای اینکه کد کاتلین برای جاوا قابل استفاده باشد، باید از «@JvmOverloads» استفاده کنید تا overloadهای مختلف ساخته شوند.
🔹 مثال عملی: یک کلاس کاتلین با یک تابع و یک companion object داریم:
class Greeter(private val name: String) {
@JvmOverloads
fun greet(message: String? = null): String {
val finalMessage = message ?: "Hello"
return "$finalMessage, $name!"
}
companion object {
@JvmStatic
fun create(name: String): Greeter = Greeter(name)
}
}
🔹 حالا در جاوا میتوانید اینطور صدا بزنید:
Greeter greeter = Greeter.create("Ali");
String result1 = greeter.greet(); // Hello, Ali!
String result2 = greeter.greet("Salam"); // Salam, Ali!
🔹 توضیح: «@JvmStatic» متد Companion را به عنوان یک متد استاتیک واقعی در جاوا در دسترس قرار میدهد. «@JvmOverloads» باعث میشود جاوا بتواند بدون پارامتر هم تابع را صدا بزند.
🔹 نکته حرفهای: برای فیلدهای «top-level» نیز از «@JvmField» استفاده کنید تا جاوا مستقیماً به آنها دسترسی داشته باشد. همچنین «@JvmName» برای تغییر نام متدهای کاتلین در خروجی جاوا کاربرد دارد.
🔥 گرفته اصلی: با این حاشیهنویسیها، کاتلین و جاوا میتوانند بدون هیچ دردی در یک پروژه کنار هم کار کنند. حواستان به نوعهای نالپذیر و پارامترهای پیشفرض باشد!
#Codeit #Android #Kotlin #Java #Interop #NullSafety #JvmOverloads #CompanionObject
🌐 Codeit → https://code-it.ir
━━━━━━━━━━━━━━━
@CodeitMobile
🔥1