Z
ZHANK
实用技巧

Java 互操作

Kotlin 调 Java、Java 调 Kotlin、@JvmStatic/@JvmOverloads

Java 互操作

Kotlin 与 Java 100% 互操作——互相调用、互相继承,无需任何适配。

学完本章你将: 掌握 Kotlin 调 Java、Java 调 Kotlin、@JvmStatic/@JvmOverloads。


Kotlin 调用 Java

kotlin
// Java 类直接用
val list = ArrayList<String>()
list.add("Hello")
list.add("World")

// 注意:Java 返回的是平台类型(可空/非空未知)
val text: String = System.getProperty("java.version")
val nullable: String? = System.getProperty("nonexistent")

Java 调用 Kotlin

java
// Kotlin 文件 → Java 类(文件名 + Kt 后缀)
// File: Utils.kt → UtilsKt

// 顶层函数
UtilsKt.greet("World");

// companion object
User.Companion.create("小明");

常用注解

kotlin
// @JvmStatic——生成真正的 static 方法(Java 可用类名直接调)
class User {
    companion object {
        @JvmStatic
        fun create(name: String) = User(name)
    }
}

// @JvmOverloads——为默认参数生成重载方法
@JvmOverloads
fun greet(name: String = "世界") = "Hello, $name!"

// @JvmField——暴露为 public 字段(不用 getter/setter)
class Config {
    @JvmField
    val version = "1.0"
}