kotlin 用于合成颜色类的房间类型转换器

cu6pst1q  于 2023-08-06  发布在  Kotlin
关注(0)|答案(2)|浏览(163)

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

  1. error: Class is referenced as a converter but it does not have any converter methods.
  2. public final class ColorConverter {
  3. ^

字符串
颜色类(编写中)

  1. value class Color(val value: ULong) {
  2. ...
  3. }


ColorConverter实现

  1. object ColorConverter {
  2. @JvmStatic
  3. @TypeConverter
  4. fun toLong(color: Color): Long = color.value.toLong()
  5. @JvmStatic
  6. @TypeConverter
  7. fun toColor(value: Long): Color = Color(value)
  8. }


我也在DB中声明了

  1. @TypeConverters(ColorConverter::class)

vulvrdjw

vulvrdjw1#

  1. class ColorConverter {
  2. @TypeConverter
  3. fun toLong(color: Color): Long = color.value.toLong()
  4. @TypeConverter
  5. fun toColor(value: Long): Color = Color(value)
  6. }

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

ct3nt3jp

ct3nt3jp2#

因为Room编译器不支持内联类(值类)。但好消息是新的alpha版本2.6.0-alpha 01现在支持它。
https://developer.android.com/jetpack/androidx/releases/room#:~:text=Supporting%20value%20classes%20in%20Room%20for%20KSP.%20Room%20is%20now%20able%20to%20support%20value%20classes%20in%20Entities.%20(4194095)

相关问题