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

Room Type Converter失效排查:提示转换器类无转换方法

Room转换器报错:"Class is referenced as a converter but it does not have any converter methods" 解决方法

错误原因

Room的@TypeConverter注解要求转换方法必须是静态方法,你的Converters类中的两个转换方法都是实例方法,Room无法创建Converters的实例来调用这些方法,因此判定该类没有可用的转换器方法,触发报错。

解决方法

有两种修改方式可以解决这个问题:

方式一:将Converters改为object类(推荐)

Kotlin的object类是单例类,其成员方法默认是静态的,符合Room的要求:

import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.toArgb
import androidx.room.TypeConverter

object Converters {
    @TypeConverter
    fun fromColor(color: Color): Int {
        return color.toArgb()
    }

    @TypeConverter
    fun toColor(colorValue: Int): Color {
        return Color(colorValue)
    }
}

方式二:将转换方法放在companion object中

如果需要保留Converters为普通类,可以把转换方法移到companion object里,让它们成为静态方法:

import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.toArgb
import androidx.room.TypeConverter

class Converters {
    companion object {
        @TypeConverter
        fun fromColor(color: Color): Int {
            return color.toArgb()
        }

        @TypeConverter
        fun toColor(colorValue: Int): Color {
            return Color(colorValue)
        }
    }
}

修改后重新编译项目,报错即可消除,Room就能正常识别并使用这些转换器方法处理Color类型的字段了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 16:03:14