温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

kotlin如何与java混合编程

发布时间:2026-09-22 09:26:48 来源:亿速云 阅读:97 作者:小樊 栏目:编程语言

Kotlin 与 Java 可以无缝互操作,这是 Kotlin 设计的核心目标之一。下面从 工程配置、互相调用、注意事项、最佳实践 四个方面说明。


一、工程层面如何混合

1. Gradle 项目(最常见)

在 build.gradle 中同时支持 Java 和 Kotlin:

plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.9.22'
    id 'java'
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib"
}

目录结构:

src/
 ├── main/
 │   ├── java/      // Java 代码
 │   └── kotlin/    // Kotlin 代码

✅ Java 和 Kotlin 可以互相直接引用


二、Java 调用 Kotlin

1. 调用 Kotlin 类

// Kotlin
class User(val name: String)
// Java
User user = new User("Tom");
System.out.println(user.getName());

➡ Kotlin 的 val name 会自动生成 getName()


2. 调用 Kotlin 顶层函数

// File: StringUtils.kt
fun hello(): String = "Hello"
// Java
String s = StringUtilsKt.hello();

➡ 文件名 + Kt 作为静态类


3. 调用 object(单例)

object Config {
    fun getUrl() = "http://x.com"
}
Config.INSTANCE.getUrl();

4. 可空类型处理

fun test(name: String?) {}

Java 调用时:

test(null); // 编译通过,但运行时需注意 NPE

✅ Kotlin 的 @Nullable / @NotNull 注解会暴露给 Java


三、Kotlin 调用 Java

1. 调用 Java 类

// Java
public class Order {
    public String id;
    public String getId() { return id; }
}
val order = Order()
order.id = "1"

✅ 自动识别 getter / setter


2. Java 可变参数

void printAll(String... args) {}
printAll("a", "b")

3. 空安全处理

Java 类型在 Kotlin 中默认是 平台类型:

val s: String! = javaMethod()

⚠ 编译器不保证非空,需要自己判断


四、常见坑 & 最佳实践

⚠ 注意事项

  1. Kotlin 默认 final
    • Java 继承 Kotlin 类需加 open
  2. 静态成员
    • Kotlin 用 companion object 或 @JvmStatic
  3. 重载冲突
    • Kotlin 默认参数 + Java 重载易混乱

✅ 推荐做法

  • 新功能用 Kotlin
  • 老代码保留 Java
  • 公共 API 加 @JvmOverloads、@JvmStatic
  • 使用 kotlinx.* 替代部分 Java 库

五、典型混合场景

  • Spring Boot(Java + Kotlin Controller)
  • Android(Kotlin 主,Java 第三方库)
  • 老系统渐进式迁移

如果你有 具体场景(如 Spring、Android、Gradle 多模块),我可以直接给你示例工程结构。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手