【问题标题】:Android room one typeconverter for multiple enums?Android房间一个类型转换器用于多个枚举?
【发布时间】:2018-04-12 06:12:14
【问题描述】:

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

尺码(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;
        }

它按预期工作,但我想知道是否可以只编写一个通用类型转换器来用于我的所有枚举?

谢谢!

凯夫

【问题讨论】:

    标签: enums type-conversion android-room


    【解决方案1】:

    这是一个超级迟到的答案。我刚刚和你有同样的问题(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 }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      • 2023-02-21
      • 1970-01-01
      • 2018-04-07
      相关资源
      最近更新 更多