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

