用于撰写颜色类别的房间类型转换器

Ann*_*non 6 kotlin android-room android-jetpack-compose

我正在尝试为类创建 TypeConverter Color(androidx.compose.ui.graphics),但 room 在编译时失败并出现错误

error: Class is referenced as a converter but it does not have any converter methods.
public final class ColorConverter {
            ^
Run Code Online (Sandbox Code Playgroud)

颜色类别(组合中)

value class Color(val value: ULong) {
...
}
Run Code Online (Sandbox Code Playgroud)

颜色转换器的实现

object ColorConverter {
    @JvmStatic
    @TypeConverter
    fun toLong(color: Color): Long = color.value.toLong()

    @JvmStatic
    @TypeConverter
    fun toColor(value: Long): Color = Color(value)
}
Run Code Online (Sandbox Code Playgroud)

我也在数据库中声明了

@TypeConverters(ColorConverter::class)
Run Code Online (Sandbox Code Playgroud)

Gow*_*K K 0

class ColorConverter {
    @TypeConverter
    fun toLong(color: Color): Long = color.value.toLong()

    @TypeConverter
    fun toColor(value: Long): Color = Color(value)
}
Run Code Online (Sandbox Code Playgroud)

不要将ColorConverter作为对象,而是将其作为普通类并从方法中删除@Jvmstatic注释。我认为这会解决问题。