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

Android Room 结合 Kotlin value class 使用出现构造方法错误如何解决?

结论

Android Room 从 2.6.0 版本开始正式支持 Kotlin value class(值类),你遇到的编译报错是因为使用的 Room 版本低于 2.6.0,低版本无法识别值类的类型映射规则,解析实体构造函数时无法匹配到对应字段类型。

解决方案

方案1:升级 Room 版本到 2.6.0 及以上(推荐)

只要将项目内 Room 相关依赖的版本升级到 2.6.0 或更高,不需要额外修改代码,也不需要自定义类型转换器,Room 会自动完成值类和其包裹的基础类型之间的映射,你现有代码可以直接正常编译运行。
注意需保证 Kotlin 版本不低于 1.8.0,和 Room 2.6+ 版本兼容。

方案2:低版本 Room 兼容方案

如果暂时无法升级 Room 版本,可以通过自定义 TypeConverter 实现适配:

  1. 定义类型转换器:
class UserTokenConverter {
    @TypeConverter
    fun fromUserToken(token: UserToken): String = token.token

    @TypeConverter
    fun toUserToken(value: String): UserToken = UserToken(value)
}
  1. 在你的 Room Database 类上添加转换器注册注解:
@Database(entities = [TokenEntity::class], version = 1)
@TypeConverters(UserTokenConverter::class) // 新增这行注册转换器
abstract class AppDatabase : RoomDatabase() {
    // 你的DAO定义
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:57:00