Avatar ·

لماذا ومتى يجب استخدام @JvmStatic في companion objects في Kotlin؟

مرحباً بالجميع! بدأت تعلم Kotlin وأقوم بإعادة كتابة مشروع Java قديم. واجهت موقفاً غير مفهوم مع companion objects. لدي هذا الكود في Kotlin: ```kotlin class MyUtils { companion object { fun formatDate(date: Date): String { // تنسيق التاريخ return SimpleDateFormat("yyyy-MM-dd", Locale.US).format(date) } const val MAX_COUNT = 100 } } ``` من كود Java أحاول استدعاء هذه الدالة بهذه الطريقة: ```java String formatted = MyUtils.formatDate(new Date()); ``` لكن المترجم يعطي خطأ! يجب أن أكتب `MyUtils.Companion.formatDate(...)`، وهذا يبدو سيئاً. قرأت عن annotation `@JvmStatic`، لكنني لا أفهم تماماً: 1. لماذا يتصرف Kotlin بهذه الطريقة؟ ففي Java يمكنني ببساطة استدعاء دالة ثابتة...