Ist es möglich, Int/Long zu enumerieren? Zuvor mein Modell sah etwa so aus:Firebase Database serialisieren int zu enum?
class A(var style: Int = STYLE_NORMAL) : Parcelable, Observable{...}
Wo Stil Wert könnte entweder
const val STYLE_NORMAL : Int = 0
oder
const val STYLE_CUSTOM : Int = 1
Jetzt habe ich beschlossen, dass es besser ist, wenn ich es wickeln mit enum.
enum class Style {
@SerializedName("0") NORMAL,
@SerializedName("1") CUSTOM
}
So jetzt mein Modell wie folgt aussehen:
class A(var style: Style = Style.NORMAL) : Parcelable, Observable{...}
Und alles funktioniert gut, außer dass Firebase cann't bereits Objekte auf Vorgängermodell auf den neuen gespeicherten parsen und diese Linie
snapshot.getValue(A::java.class)
wirft Ausnahme
E/UncaughtException: com.google.firebase.database.DatabaseException: Erwartet ein String während Deserialisieren Klasse com.stasbar.models.A $ Style Enum bekam aber eine Klasse java.lang.Long
Ich verstehe, dass das Problem ist, dass Firebase nur Strings zu Enums analysieren kann. Gibt es eine Problemumgehung?