Java 互操作性:从 Java 调用 Kotlin 代码2024 年 8 月 29 日 | 4 分钟阅读 由于 Kotlin 与 Java 语言完全兼容。这意味着用 Java 代码编写的应用程序可以轻松地从 Kotlin 调用。同样,Kotlin 代码也可以从 Java 代码调用。 在讨论如何从 Java 代码调用 Kotlin 代码之前,让我们看看 Kotlin 文件在内部是什么样的。 一个简单的 Kotlin 程序内部是什么样的。让我们在 MyKotlin.kt 文件中创建一个简单的 main 函数。 编译上面的 Kotlin 文件 MyKotlin.kt 后,其内部如下所示 Kotlin 编译器在内部添加了一个包装类,命名约定为 MyKotlinKt。Kotlin 文件 MyKotlin.kt 被转换为 MyKotlinKt,并且默认是 public 的。高级函数的默认修饰符是 public,函数默认被转换为 static。由于 MyKotlin.kt 中的返回类型是 Unit,它在 MyKotlinKt 中被转换为 void。 从 Java 代码调用 Kotlin 代码MyKotlin.kt MyJava.java 输出 printing area inside Java class returning from Kotlin file: 20 Java 代码调用包中的 Kotlin 文件如果我们想从 Java 类中调用 Kotlin 代码,这两个类都位于不同的包中,这需要导入 Java 类中的包名和 Kotlin 文件名,并从 Java 类中调用 Kotlin 代码。另一种方法是使用全路径,例如 packageName.KotlinFileKt.methodName()。 MyKotlin.kt MyJava.java 输出 printing area inside Java class returning from Kotlin file: 20 使用注解 @JvmName 更改 Kotlin 文件名可以使用 @JvmName 注解将 Kotlin 文件名更改为包装类名。 MyKotlin.kt 编写 Kotlin 代码并在顶部放置注解 @file: JvmName("MyKotlinFileName")。编译 Kotlin 代码后,文件名将更改为注解中提供的名称(在本例中为 MyKotlinFileName)。访问 MyKotlin.kt 的代码时,我们需要使用文件名 MyKotlinFileName。 MyJava.java 输出 printing area inside Java class returning from Kotlin file: 20 使用 @JvmMultifileClass 调用具有相同生成的 Java 类名的多个文件的方法如果 Kotlin 的多个文件使用 @JvmName 注解具有相同的生成的 Java 文件名,则在从 Java 文件调用时通常会出错。但是,Kotlin 编译器会生成一个包含生成的 Java 文件和具有相同名称的所有文件声明的单个 Java façade 类。为了激活此 façade 生成,我们在所有文件中使用 @JvmMultifileClass 注解。 MyKotlin1.kt MyKotlin2.kt MyJava.java 输出 printing area inside Java class returning from Kotlin file: 20 printing volume inside Java class returning from Kotlin file: 120 通过 const 修饰符访问 Kotlin 属性在顶级和类中使用 const 修饰符注释的 Kotlin 属性将转换为 Java 中的 static 字段。可以从 Java 文件中作为静态属性访问这些属性。例如 MyKotlin.kt MyJava.java 输出 const 1 max 239 version 9 下一个主题Kotlin 正则表达式介绍 |
我们请求您订阅我们的新闻通讯以获取最新更新。