【发布时间】:2019-03-20 01:15:03
【问题描述】:
可以将 int/long 序列化为 enum 吗? 以前我的模型是这样的:
class A(var style: Int = STYLE_NORMAL) : Parcelable, Observable{...}
样式值可以是其中一个
const val STYLE_NORMAL : Int = 0
或
const val STYLE_CUSTOM : Int = 1
现在我决定用枚举包裹它会更好。
enum class Style {
@SerializedName("0") NORMAL,
@SerializedName("1") CUSTOM
}
所以我的模型现在看起来像这样:
class A(var style: Style = Style.NORMAL) : Parcelable, Observable{...}
除了 Firebase 无法将先前模型上已存储的对象解析为新模型之外,一切正常,并且这一行
snapshot.getValue(A::java.class)
抛出异常
E/UncaughtException:com.google.firebase.database.DatabaseException: 在反序列化为枚举类时需要一个字符串 com.stasbar.models.A$Style 但有一个类 java.lang.Long
我了解问题在于 Firebase 只能将字符串解析为枚举。 有什么解决办法吗?
【问题讨论】:
标签: firebase-realtime-database enums kotlin