Cómo llamar a funciones de extensión de Kotlin desde Java y por qué no son visibles
¡Hola a todos! Soy nuevo en Kotlin, vengo de Java. Escribí un par de funciones de extensión para la clase String en un archivo separado Utils.kt:
```kotlin
// Utils.kt
package com.example.utils
fun String.isEmail(): Boolean = this.contains("@")
fun String.capitalizeWords(): String = this.split(" ").joinToString(" ") { it.capitalize() }
```
En Kotlin todo funciona perfectamente, pero cuando intento llamar a estas funciones desde código Java, el IDE las subraya en rojo:
```java
// Main.java
import com.example.utils.UtilsKt; // la importación aparece, pero...
public class Main {
public static void main(String[] args) {
String email = "test@example.com";
// Error: Cannot resolve method 'isEmail'
System.out.println(email.isEmail());
// Y esto tampoco funciona:
// System.out.println(UtilsKt.isEmail(email));
}
}
```
He leído que Kotlin compila las funciones de extensión en métodos estáticos, pero ¿por qué no son visibles como métodos normales de la clase String?