لماذا ومتى يجب استخدام @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 يمكنني ببساطة استدعاء دالة ثابتة...