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

如何在Java中访问Kotlin的Object类?注解报错问题求解

解决Kotlin Object类加@JVMStatic注解报错的问题

首先明确:@JVMStatic注解不能直接加在Object类本身上,它的作用目标是类中的属性或方法,用来让Kotlin的成员在Java中以静态成员的形式访问。

针对你的场景,要让Java能访问Kotlin的AddCard这个Object类,不需要给类加@JVMStatic,直接按下面的方式处理:

正确写法

保持@Parcelize注解在Object类上,同时显式继承Parcelable接口(@Parcelize会自动帮你生成Parcelable的实现代码,但声明接口是必须的):

@Parcelize
object AddCard : Parcelable

在Java中访问的方式

在Java类里,直接通过AddCard.INSTANCE来访问这个单例对象,比如传递到需要Parcelable的场景:

// Java代码示例
Intent intent = new Intent(this, TargetActivity.class);
intent.putExtra("CARD_KEY", AddCard.INSTANCE);
startActivity(intent);

为什么之前的写法报错

@JVMStatic的适用目标是函数、属性的getter/setter,不能直接标注在Object类上,所以你把它加在类上会触发"This annotation is not applicable to target object."的错误。如果你的Object类里有自定义的方法或属性,想要在Java中以静态方式访问,才需要给这些成员单独加@JVMStatic,示例:

@Parcelize
object AddCard : Parcelable {
    // 给方法加@JVMStatic,Java中可直接用AddCard.doSomething()访问
    @JVMStatic
    fun doSomething() {
        // 业务逻辑代码
    }

    // 给属性加@JVMStatic,Java中可直接用AddCard.DEFAULT_VALUE访问
    @JVMStatic
    val DEFAULT_VALUE = "default"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:35:32