MJB*_*B22 15 java enums android realm
我正在开发一个Android应用程序和Realm,我需要为我的一个对象创建一个枚举属性; 但我在这篇文章中发现Realm还不支持enum.
我的目标是这样的:
public class ShuttleOption extends RealmObject {
private int Id;
private String Label;
private ShuttleTypes OriginShuttleType;
}
Run Code Online (Sandbox Code Playgroud)
和我的枚举类(ShuttleTypes)对应:
HOME = 1;
Run Code Online (Sandbox Code Playgroud)
和
WORK = 2;
Run Code Online (Sandbox Code Playgroud)
谁能建议我怎么做?
Chr*_*ior 31
您可以使用问题中描述的模式:https://github.com/realm/realm-java/issues/776#issuecomment-190147079
基本上将它保存为Realm中的String并将其转换为进出:
public enum MyEnum {
FOO, BAR;
}
public class Foo extends RealmObject {
private String enumDescription;
public void saveEnum(MyEnum val) {
this.enumDescription = val.toString();
}
public MyEnum getEnum() {
return MyEnum.valueOf(enumDescription);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您需要适用于Kotlin的解决方案,则可以使用以下方法:
open class Foo: RealmObject() {
var enum: MyEnum
get() { return MyEnum.valueOf(enumDescription) }
set(newMyEum) { enumDescription = newMyEnum.name }
private var enumDescription: String = MyEnum.FOO.name
}
Run Code Online (Sandbox Code Playgroud)
MyEnum 是@ChristianMelchior答案中声明的枚举。
值得一提的是,由于enum没有支持领域,因此不会持久存在于Realm中。无需@Ignore在其上使用注释
| 归档时间: |
|
| 查看次数: |
10291 次 |
| 最近记录: |