أنواع المنصة
قابلية null القادمة من Java
أنواع المنصة درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
تلتقي Kotlin مع Java
تعمل Kotlin على JVM وتستدعي كود Java باستمرار. لكن Java لا تعرف مفهوم الأنواع nullable والأنواع غير null.
فكيف تتعامل Kotlin مع قيمة قادمة من Java؟ من خلال أنواع المنصة.
ما نوع المنصة
نوع المنصة هو نوع تحصل عليه Kotlin من Java وتكون إمكانية كونه null غير معروفة.
تكتبه Kotlin بالشكل String! في رسائل الخطأ. وتعني علامة التعجب أن القيمة قد تكون null أو غير null، ولن تفرض Kotlin اختيارًا معينًا.
تحقق أكثر تساهلًا
تخفف Kotlin من فحوصات null عند التعامل مع أنواع المنصة. ويمكنك التعامل مع القيمة على أنها غير null من دون خطأ من المترجم.
لكن المقابل هو أنه إذا كانت null فعلًا، فستحصل على NullPointerException أثناء التشغيل.
أنت تختار النوع
عند تخزين قيمة من نوع منصة، فإنك تحدد كيفية كتابة نوعها:
- كقيمة غير null
String→ مريح لكنه محفوف بالمخاطر - كقيمة nullable
String?→ آمن وواضح
يحاكي مثال Kotlin هذا الاختيار.
fun fromJava(): String? = "value from Java"
fun main() {
val safe: String? = fromJava()
println(safe?.length)
}الخيار المحفوف بالمخاطر
إذا افترضت أن القيمة غير null وأعاد المصدر قيمة null، فسيحدث الانهيار عند الإسناد أو عند أول استخدام.
هذا هو الخطر الخفي لأنواع المنصة.
fun fromJava(): String? = null
fun main() {
try {
val risky: String = fromJava()!!
println(risky.length)
} catch (e: NullPointerException) {
println("Null came from the Java side")
}
}تساعد التعليقات التوضيحية
يمكن لمكتبات Java استخدام تعليقات توضيحية مثل @Nullable و@NotNull.
وعند وجودها، تحترمها Kotlin وتمنحك String? أو String مناسبًا بدلًا من نوع منصة.
أفضل ممارسة: افترض أنها nullable
عند استدعاء كود Java غير المرفق بتعليقات توضيحية، تتمثل العادة الآمنة في التعامل مع النتيجة على أنها nullable.
اكتب نوع متغيرك باستخدام ? واستخدم الاستدعاءات الآمنة، كما تفعل مع أي قيمة nullable في Kotlin.
fun fromJava(): String? = "data"
fun main() {
val value: String? = fromJava()
val length = value?.length ?: 0
println(length)
}حدود دفاعية
تعامل مع حدود Java على أنها غير موثوقة. تحقّق من القيم أو عيّن لها قيمًا افتراضية عند دخولها إلى كود Kotlin مباشرةً.
بعد ذلك، يعمل باقي كودك باستخدام أنواع Kotlin واضحة وسليمة.
fun fromJava(): String? = null
fun main() {
val name = fromJava() ?: "default"
// from here on, name is a clean non-null String
println(name.uppercase())
}سبب سماح Kotlin بذلك
كان بإمكان Kotlin فرض اعتبار كل قيمة قادمة من Java nullable، لكن ذلك كان سيجعل التكامل مع Java مطولًا ومزعجًا للغاية.
تمثل أنواع المنصة حلًا وسطًا عمليًا: الراحة مع إتاحة خيار التشدد.
التعرّف على أنواع المنصة
لن تكتب String! بنفسك. فهي لا تظهر إلا في تلميحات IDE ورسائل الخطأ عند تمرير مؤشر الفأرة فوق القيم القادمة من Java.
رؤية علامة ! هي إشارة لك كي تحدد قابلية القيمة لأن تكون null بوعي.
جمع المفاهيم
تصل أنواع المنصة بين Java وKotlin:
- تكون إمكانية كونها null غير معروفة، وتظهر بالشكل
Type! - تتيح لك Kotlin اختيار النوع nullable أو غير null
- افترض أنها nullable عند عدم التأكد حفاظًا على الأمان
- تزيل التعليقات التوضيحية التخمين
fun fromJava(): String? = "safe value"
fun main() {
val value: String? = fromJava()
println(value?.uppercase() ?: "missing")
}اختبار سريع
اختبر مدى فهمك لأنواع المنصة.
مراجعة
لقد تعلّمت كيف تعبر قابلية كون القيمة null حدود Java:
- أنواع المنصة تكون إمكانية كونها null غير معروفة
- تخفف Kotlin من الفحوصات، لكن الافتراض الخاطئ يسبب NPE أثناء التشغيل
- افترض أن القيم nullable وعيّن لها قيمًا افتراضية عند الحدود
- تعيد تعليقات Java التوضيحية الأنواع الصحيحة
وبذلك يكتمل التعمق في أمان null.
الأسئلة الشائعة
هل درس «أنواع المنصة» مجاني؟
نعم — نص درس «أنواع المنصة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
ماذا ستتعلم في «أنواع المنصة»؟
قابلية null القادمة من Java تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟
لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «أنواع المنصة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟
نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.