教程 - 向 Java 项目添加 Kotlin
Kotlin 与 Java 完全兼容互通, 因此你可以将 Kotlin 逐步引入到现有的 Java 项目中, 而不需要重写所有内容.
在这篇教程中, 你将学习如何:
设置 Maven 或 Gradle 构建工具, 编译 Java 和 Kotlin 代码.
在项目目录中组织 Java 和 Kotlin 源代码文件.
使用 IntelliJ IDEA 将 Java 文件转换为 Kotlin.
项目配置
要向 Java 项目添加 Kotlin, 你需要根据所使用的构建工具, 将项目配置为同时使用 Kotlin 和 Java.
项目配置确保 Kotlin 和 Java 代码都能正确编译, 并且可以无缝地相互引用.
Maven
要在 Maven 项目中同时使用 Kotlin 和 Java, 请在 pom.xml 文件中应用 Kotlin Maven plugin, 并添加 Kotlin 依赖项:
在
<properties>部分, 添加 Kotlin 版本属性:<properties> <kotlin.version>2.4.0</kotlin.version> </properties>在
<dependencies>部分, 向<plugins>部分添加所需的依赖项:<dependencies> <!-- 向 test 运行期, 添加 JUnit Jupiter 引擎 --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-params</artifactId> <scope>test</scope> </dependency> </dependencies>在
<build><plugins>部分, 添加 Kotlin plugin:<build> <pluginManagement><!-- 锁定 plugin 版本, 避免使用 Maven 的默认值 (可以移动到父 pom 文件) --> <!-- 使用 Kotlin 扩展时, 不需要 maven-compiler-plugin --> </plugins> <!-- 对 main 和 test 代码, 启用 Kotlin Maven plugin --> <plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <version>${kotlin.version}</version> <extensions>true</extensions> </plugin> </plugins> </build>在 Kotlin Maven plugin 中启用
<extensions>true</extensions>有助于:向项目自动添加
kotlin-stdlib依赖项.配置执行阶段, 先编译 Kotlin, 然后编译 Java.
在 Java 代码中引用 Kotlin 代码, 或者相反.
自动将 JVM 目标版本与 Java 编译器版本对齐.
使用带有 extensions 的 Kotlin Maven plugin 时, 不需要在
<build><pluginManagement>部分单独配置maven-compiler-plugin.在 IDE 中重新加载 Maven 项目.
运行测试, 验证配置:
./mvnw clean test
Gradle
要在 Gradle 项目中同时使用 Kotlin 和 Java, 请在 build.gradle.kts 文件中应用 Kotlin JVM plugin, 并添加 Kotlin 依赖项:
在
plugins {}代码块中, 添加 Kotlin JVM plugin:plugins { // 其他 plugin kotlin("jvm") version "2.4.0" }设置 JVM 工具链版本, 与你的 Java 版本匹配:
kotlin { jvmToolchain(17) }这个设置会确保 Kotlin 使用与 Java 代码相同的 JDK 版本.
在
dependencies {}代码块中, 添加kotlin("test")库, 这个库提供 Kotlin 测试工具并与 JUnit 集成:dependencies { // 其他依赖项 testImplementation(kotlin("test")) // 其他测试依赖项 }在 IDE 中重新加载 Gradle 项目.
运行测试, 验证配置:
./gradlew clean test
项目结构
通过这种配置, 你可以在同一个源代码目录中混合使用 Java 和 Kotlin 文件:
你可以手动创建这些目录, 也可以在添加第一个 Kotlin 文件时让 IntelliJ IDEA 自动创建.
Kotlin 插件会自动识别 src/main/java 和 src/test/java 目录, 因此你可以将 .kt 和 .java 文件放在同一目录中.
将 Java 文件转换为 Kotlin
Kotlin plugin 还附带了一个 Java 到 Kotlin 的转换器(J2K), 可以将 Java 文件自动转换为 Kotlin. 要对文件使用 J2K, 请在其右键菜单中, 或在 IntelliJ IDEA 的 Code 菜单中, 点击 Convert Java File to Kotlin File.

虽然转换器并不能保证完全正确, 但它能很好地将大多数样板代码从 Java 转换为 Kotlin. 但是, 有时仍然需要一些手动调整.
探索编译器 plugin
如果你有一个更加复杂的项目, 使用了 Spring 或 Java Persistence API (JPA), 你可以使用 Kotlin 编译器 plugin, 这些 plugin 会自动使 Kotlin 的语言特性适应框架的要求, 减少样板代码:
all-openplugin, 在使用特定注解时会自动使类及其成员变为open. 这对于 Spring 等要求类为非 final 的框架特别有用.对于 Spring, 你可以使用专用的
kotlin-springplugin, 它是all-open的封装. 它会自动指定 Spring 注解.no-argplugin, 为带有特定注解的类生成额外的无参数构造器. 让 JPA 能够实例化那些原本没有默认构造器的类.你也可以使用
kotlin-jpaplugin, 它是no-arg的封装. 它会自动指定 no-arg 注解.power-assertplugin, 为断言提供包含上下文信息的详细失败消息, 改善调试体验. 它会显示中间值, 帮助你理解测试失败的原因.
下一步
在 Java 项目中开始使用 Kotlin 最简单的方法, 是先添加 Kotlin 测试: