如何在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
相关产品推荐
相关产品推荐

