الخاصية ‎‎javaClass‎ في Kotlin

من موسوعة حسوب
مراجعة 05:26، 8 سبتمبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

تعيد الخاصيّة javaClass صنف Java الخاص بالكائن (object) الذي تُستدعى عبره أثناء التشغيل (runtime)، وتُعرَّف هذه الخاصية في جميع الأصناف الفرعيّة (sub-classes) من الصنف Any.

البنية العامة

inline val <T : Any> T.javaClass: Class<T>

يُلاحَظ وجود الكلمة المفتاحية inline للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع توثيق الدوال المباشرة (inline functions).

القيم المعادة

صنف Java الخاصّ بالكائن الذي تُستدعى عبره أثناء التشغيل (runtime).

أمثلة

تنشِئ الشيفرة الآتية سلسلةً نصيةً باسم a، وتحصل على صنف Java الخاص بها عبر استدعاء الخاصية javaClass‎ لتلك السلسلة وتطبع النتيجة:

fun main(args: Array<String>) {
   var a: String = "hsoub"
   var JClass_a = a.javaClass
   println(" $JClass_a") // class java.lang.String
}

ملاحظة

أهمل استخدام هذه الخاصية في الفترة الأخيرة، وأصبح من الأفضل -بدلًا عنها- استخدام الخاصيّة java للحصول على صنف Java الموافق لهذا الصنف في Kotlin، أو تحويل (cast) نسخة الكائن (instance) إلى الصنف Any للحصول على صنف Java الخاص بتعريف استخدام (implementation) الصنف KClass أثناء التشغيل (runtime)، ويوضِّح المثال الآتي ذلك إذ يُستخدَم المعامل :: لإنشاء مرجعيّة الصنف (class reference) في Kotlin أثناء التنفيذ (راجع مرجعيّات الأصناف للمزيد من التفاصيل) لتصبح الشيفرة كما يلي:

fun main(args: Array<String>) {
   var a: String = "hsoub"
   var KClass_a = a::class
   var JClass_a = KClass_a.java  

   println(" $JClass_a") // class java.lang.String
}

انظر أيضًا

  • الصنف Any: الجذر الرئيسيّ في الهرميّة العامّة لأيّ صنفٍ مُستخدَمٍ أثناء البرمجة في Kotlin.

مصادر