我的项目中有不同的枚举:
大小(S、M、L、XL)和颜色(黑色、白色、红色、蓝色...)
要将枚举保存到数据库中,我需要为所有这些元素创建一个类型转换器,如下所示:
@TypeConverter
public static Size getSize(int numeral){
for(Size s : values()){
if(s.numeral == numeral){
return s;
}
}
return null;
}
@TypeConverter
public static Integer getSizeInt(Size size){
return size.numeral;
}
它像预期的那样工作,但我想知道是否有可能只编写一个通用的类型转换器,用于我的所有枚举?
谢谢!
Kev
发布于 2018-06-30 04:23:39
这是一个非常晚的答案。我和你(Android Room type convert multiple enum types)也有同样的问题。简而言之,不,Room目前不支持通用转换器。您必须为每个枚举类创建一个转换器。类似于下面的内容
object EnumATypeConv {
@TypeConverter
@JvmStatic
fun toOrdinal(type: EnumA): Int = type.ordinal
@TypeConverter
@JvmStatic
fun toEnumA(ordinal: Int): EnumA = EnumA.values().first { it.ordinal == ordinal }
}
https://stackoverflow.com/questions/49789189
复制相似问题