如何从Java调用Kotlin扩展函数以及为什么它们不可见?
大家好!我是Kotlin新手,从Java迁移过来。我在单独的Utils.kt文件中为String类编写了几个扩展函数:
```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";
// 错误:无法解析方法 'isEmail'
System.out.println(email.isEmail());
// 这样也不行:
// System.out.println(UtilsKt.isEmail(email));
}
}
```
我读到Kotlin将扩展函数编译为静态方法,但为什么它们不能作为String类的普通方法可见?