如何在Realm中存储枚举?

MrH*_*rio 5 java enums realm

如何在使用Realm时存储Java枚举类?

从他们的文档来看,似乎Realm尚未支持存储枚举:

字段类型 Realm支持以下字段类型:boolean,byte,short,¯nt,long,float,double,String,Date和byte [].整数类型byte,short,int和long都映射到Realm中的相同类型(实际上很长).此外,支持RealmObject和RealmList的子类来建模关系.

有迹象表明,有人问了Objective-C和得到回答类似的问题在这里.但是还没有Java.

Chr*_*ior 6

如果没有自定义方法,目前很不方便,但您可以存储字符串表示并将其转换为枚举.

public enum Foo {
  FOO
}

// V1: Using static methods
public class Bar1 extends RealmObject {
  private String enumValue;

  // Getters/setters

  // Static methods to handle the enum values
  public static Foo getEnum(Bar1 obj) {
    return Foo.valueOf(obj.getEnumValue())
  }

  public static Foo setEnum(Bar1 obj, Foo enum) {
    return obj.setEnumValue(enum.toString());
  }
}

// V2: Use a dummy @Ignore field to create getters/setters you can override yourself.
public class Bar2 extends RealmObject {

  private String enumValue;

  // Dummy field 
  @Ignore
  private String enum;

  public void setEnumValue(String enumValue) {
    this.enumValue = enumValue;
  }

  public String getEnumValue() {
    return enumValue;
  }

  public void setEnum(Foo foo) {
    setEnumValue(foo.toString());
  }

  public Foo getEnum() {
    return Foo.valueOf(getEnumValue());
  }
}
Run Code Online (Sandbox Code Playgroud)