首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android room one类型转换器支持多个枚举?

Android room one类型转换器支持多个枚举?
EN

Stack Overflow用户
提问于 2018-04-12 14:12:15
回答 1查看 1.7K关注 0票数 2

我的项目中有不同的枚举:

大小(S、M、L、XL)和颜色(黑色、白色、红色、蓝色...)

要将枚举保存到数据库中,我需要为所有这些元素创建一个类型转换器,如下所示:

代码语言:javascript
复制
        @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

EN

回答 1

Stack Overflow用户

发布于 2018-06-30 04:23:39

这是一个非常晚的答案。我和你(Android Room type convert multiple enum types)也有同样的问题。简而言之,不,Room目前不支持通用转换器。您必须为每个枚举类创建一个转换器。类似于下面的内容

代码语言:javascript
复制
object EnumATypeConv {

    @TypeConverter
    @JvmStatic
    fun toOrdinal(type: EnumA): Int = type.ordinal

    @TypeConverter
    @JvmStatic
    fun toEnumA(ordinal: Int): EnumA = EnumA.values().first { it.ordinal == ordinal }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49789189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档