You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中与Java static class等价的实现方式是什么?

Kotlin 中 Java static class 的等价实现

Kotlin 本身没有static关键字,对应 Java 不同场景的静态类,有几种常用的等价实现:

注:Java 本身不存在顶层静态类,static class只能是嵌套静态类,核心特性是无需依赖外部类实例即可实例化、可直接持有静态成员。

  • 场景1:替代 Java 的嵌套静态类
    Kotlin 的默认嵌套类本身就等价于 Java 的静态嵌套类,无需额外修饰:
class Outer {
    // 该嵌套类对应Java的static class StaticNestedClass
    class StaticNestedClass {
        fun test() = println("嵌套静态类方法")
    }
}

// 调用方式,不需要创建Outer实例
val nestedInstance = Outer.StaticNestedClass()
  • 场景2:替代全静态方法的工具类(Java中常声明为final类+私有构造、所有方法都是static)
    直接用object关键字声明单例类即可,调用时无需创建实例,和Java静态工具类的使用方式完全一致:
object CommonUtils {
    fun calculate(a: Int, b: Int) = a + b
    val VERSION = "1.0.0"
}

// 调用方式
val sum = CommonUtils.calculate(1,2)
val version = CommonUtils.VERSION
  • 场景3:在普通类内部添加静态成员或静态嵌套类
    在类内声明companion object(伴生对象),内部的所有内容都对应Java的静态成员区域:
class User {
    // 伴生对象内部的内容等价于Java的静态成员
    companion object {
        // const修饰的常量对应Java的public static final常量
        const val TAG = "User"
        // 加@JvmStatic注解后可以在Java代码中像普通静态方法一样调用
        @JvmStatic
        fun getDefaultUser() = User()

        class StaticConfig {
            val defaultAge = 18
        }
    }

    var name: String = ""
}

// 调用方式
val defaultUser = User.getDefaultUser()
val userTag = User.TAG
val config = User.StaticConfig()

内容的提问来源于stack exchange,提问作者Saurabh Dhage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:18:01