我试图为Color(androidx.compose.ui.graphics)
类创建TypeConverter,但在coompile时,room失败并出现错误
error: Class is referenced as a converter but it does not have any converter methods.
public final class ColorConverter {
^
字符串
颜色类(编写中)
value class Color(val value: ULong) {
...
}
型
ColorConverter实现
object ColorConverter {
@JvmStatic
@TypeConverter
fun toLong(color: Color): Long = color.value.toLong()
@JvmStatic
@TypeConverter
fun toColor(value: Long): Color = Color(value)
}
型
我也在DB中声明了
@TypeConverters(ColorConverter::class)
型
2条答案
按热度按时间vulvrdjw1#
字符串
不要将ColorConverter作为对象,而是将其作为普通类,并从方法中删除**@Jvmstatic**注解。我认为这将解决这个问题。
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)