الأساليب والمتغيرات الثابتة في Kotlin: كيف تستبدل static في Java؟
مرحبًا! أنا أنتقل من Java إلى Kotlin وواجهت مشكلة. في Java، كنت أستخدم الأساليب والمتغيرات الثابتة بشكل متكرر لفئات الأدوات، الثوابت، أو أساليب المصنع. على سبيل المثال، هذه فئة بسيطة في Java:
```java
public class MathUtils {
public static final double PI = 3.14159;
public static double square(double x) {
return x * x;
}
}
```
حاولت كتابة نفس الشيء في Kotlin، لكن المترجم يعطي خطأ عند محاولة استخدام الكلمة المفتاحية `static`. قرأت أنه لا يوجد `static` في Kotlin كما هو، ولكن هناك ما يسمى "companion objects". جربت:
```kotlin
class MathUtils {
companion object {
val PI = 3.14159
fun square(x: Double): Double = x * x
}
}
```
هذا يعمل، لكن هناك عدة نقاط تربكني:
1. لماذا يجب كتابة `companion object` بدلاً من `static` فقط؟
2. هل يمكن استدعاء هذه الأساليب دون إنشاء مثيل للفئة، كما في Java (`MathUtils.square(5.0)`)؟
3. هل هناك طريقة أسهل؟