Avatar ·

如何从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类的普通方法可见?