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

Parcelize数据类添加@RawValue注解报错:该注解不适用于目标参数

解决Parcelize中Any类型字段使用@RawValue的注解目标问题

这个问题我之前踩过坑,其实核心就是注解的目标没指定对,给你一步步说清楚怎么解决:

  • 首先,你遇到的报错“This annotation is not applicable to the target value parameter”,是因为你直接把@RawValue加在了数据类主构造函数的参数上,而@RawValue注解默认的目标是构造函数参数本身,但它实际需要被应用到属性对应的幕后字段(field)上。

  • 解决办法很简单,给注解加上field:的目标限定符,修改后的代码应该是这样:

    @Parcelize
    data class YourDataClass(
        @field:RawValue var tokenType: Any? = null
        // 其他字段...
    ) : Parcelable
    
  • 原理解释:加上field:之后,编译器就会把@RawValue注解绑定到属性的幕后字段上,这就符合Parcelize对这个注解的使用要求了——此时Parcelize会用writeValue()来序列化这个Any?类型的字段,完美匹配最初的错误提示要求。

  • 最后提醒一句:使用@RawValue时要注意,这个Any类型的实际对象必须是可序列化的(比如实现了Parcelable或Serializable接口),不然运行时会抛出序列化失败的异常,因为writeValue()只能处理支持序列化的对象。

内容的提问来源于stack exchange,提问作者Tarun Deep Attri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:26:40