Avatar ·

Как вызвать функции-расширения Kotlin из Java и почему они не видны?

```html مرحباً بالجميع! أنا مبتدئ في Kotlin، أنتقل من Java. كتبت دالتين موسعتين للصنف String في ملف منفصل Utils.kt: ```kotlin // Utils.kt package com.example.utils fun String.isEmail(): Boolean = this.contains("@") fun String.capitalizeWords(): String = this.split(" ").joinToString(" ") { it.capitalize() } ``` في Kotlin كل شيء يعمل بشكل ممتاز، ولكن عندما أحاول استدعاء هذه الدوال من كود Java، يقوم IDE بتسليط الضوء عليها باللون الأحمر: ```java // Main.java import com.example.utils.UtilsKt; // الاستيراد ظهر، ولكن... public class Main { public static void main(String[] args) { String email = "test@example.com"; // خطأ: Cannot resolve method 'isEmail' System.out.println(email.isEmail()); // وكذلك هذا لا يعمل: // System.out.println(UtilsKt.isEmail(email)); } } ``` لقد قرأت أن Kotlin يقوم بترجمة الدوال الموسعة إلى طرق ثابتة، ولكن لماذا لا تكون مرئية كطرق عادية للصنف String؟ ```