companion object
الكائن المرافق companion object
companion object يوفّر أعضاء مرتبطة بالصنف نفسه لا بكل كائن — بديل Kotlin عن static في Java.
Kotlin لا تملك الكلمة المفتاحية static؛ بدلًا من ذلك، الأعضاء المشتركة على مستوى الصنف تُعرّف داخل companion object واحد لكل صنف. يمكن الوصول لأعضائه مباشرة عبر اسم الصنف دون إنشاء كائن. يُستخدم غالبًا لثوابت (const val) أو دوال مصنع (factory functions) تُنشئ الكائن بمنطق مخصّص.
الصياغة
class الاسم(...) {
companion object {
const val ثابت = قيمة
fun دالةمصنع(...): الاسم = ...
}
}📄 مثال
class User private constructor(val name: String) {
companion object {
const val MAX_NAME_LENGTH = 50
fun fromInput(raw: String): User {
val trimmed = raw.trim().take(MAX_NAME_LENGTH)
return User(trimmed)
}
}
}
val u = User.fromInput(" براء ") // عبر اسم الصنف مباشرة
println(User.MAX_NAME_LENGTH) // 50أهم النقاط
| العنصر | الوظيفة |
|---|---|
| companion object | كائن واحد لكل صنف — أعضاؤه مرتبطة بالصنف لا بالنسخ |
| const val | ثابت زمن-ترجمة يُعرَّف عادة داخل companion |
| الوصول عبر اسم الصنف | Class.member بلا الحاجة لكائن companion صريح |
💡 نصائح عملية
- استخدم companion object مع باني private لفرض إنشاء الكائن عبر دالة مصنع بمنطق تحقّق
- يمكن تسمية companion object صراحة: companion object Factory { ... } لتوضيح غرضه
⚠️ أخطاء شائعة
- توقّع سلوك static من Java بالكامل — companion object هو كائن حقيقي (singleton) وليس مجرد أعضاء ساكنة
- وضع كل شيء في companion object بدل استخدام دوال top-level العادية عند عدم الحاجة لربطه بالصنف
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار KOTLIN الكامل بالعربي.