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

如何在Java中使用Kotlin Object单例类并解决访问报错

解决Kotlin Object单例在Java中调用的问题

核心问题排查

你遇到的编译错误大概率是Kotlin单例类的可见性问题:Kotlin默认的object类访问修饰符是internal,Java代码无法跨模块访问internal类,必须显式声明为public。

两种正确调用方式

方式一:直接用Kotlin自动生成的静态实例(推荐)

Kotlin的object类会自动生成一个名为INSTANCE的静态字段,Java代码无需额外编写方法,直接调用即可:

// Java代码
MySingletonClass singleton = MySingletonClass.INSTANCE;

对应的Kotlin单例类只需保证可见性:

// Kotlin代码
public object MySingletonClass {
    // 你的单例方法
    fun doSomething() {
        // ...
    }
}

方式二:自定义@JvmStatic的getInstance方法(兼容原有Java调用逻辑)

如果需要保持原Java代码中getInstance()的调用习惯,只需在Kotlin单例类中显式声明public,并给方法加上@JvmStatic注解:

// Kotlin代码
public object MySingletonClass {
    @JvmStatic
    fun getInstance(): MySingletonClass {
        return this
    }

    // 其他业务方法
    fun doBusiness() {
        // ...
    }
}

Java代码中正常调用:

// Java代码
MySingletonClass singleton = MySingletonClass.getInstance();
singleton.doBusiness();

额外检查项

  • 确认项目已正确配置Kotlin插件:比如Gradle项目中已应用kotlin-jvm(普通JVM项目)或kotlin-android(Android项目)插件,并依赖kotlin-stdlib
  • 确保Kotlin和Java代码属于同一个模块,不存在跨模块的internal访问问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 11:54:20