Atlas Device SDK 已弃用。 有关详细信息,请参阅弃用页面。
枚举在 Java SDK 中不是原生支持的。不过,如果按照以下步骤操作,您可以在 Realm 对象中使用 Java 和 Kotlin 枚举。
使用
要在Realm 对象类中使用枚举,请定义一个字段与您的枚举的根本的数据类型相匹配的字段。为字段创建 getter 和 setter,以在根本的值和枚举类型之间转换字段值。您可以使用 Java 的内置 Enum.valueOf() 方法从根本的类型转换为枚举类型。
Enum 类
public enum FrogState { TADPOLE("Tadpole"), FROG("Frog"), OLD_FROG("Old Frog"); private String state; FrogState(String state) { this.state = state; } public String getState() { return state; } }
Realm 对象
import io.realm.RealmObject; public class Frog extends RealmObject { String name; String state = FrogState.TADPOLE.getState(); // realm-required empty constructor public Frog() {} public String getName() { return name; } public void setName(String name) { this.name = name; } public FrogState getState() { // because state is actually a String and another client could assign an invalid value, // default the state to "TADPOLE" if the state is unreadable FrogState currentState = null; try { // fetches the FrogState enum value associated with the current internal string value currentState = FrogState.valueOf(state); } catch (IllegalArgumentException e) { currentState = FrogState.TADPOLE; } return currentState; } public void setState(FrogState value) { // users set state using a FrogState, but it is saved as a string internally this.state = value.getState(); } }
使用
Frog frog = realm.createObject(Frog.class); frog.setName("Jonathan Livingston Applesauce"); // set the state using the enum frog.setState(FrogState.FROG); // fetching the state returns an enum FrogState currentJonathanState = frog.getState();
Enum 类
enum class FrogState(val state: String) { TADPOLE("Tadpole"), FROG("Frog"), OLD_FROG("Old Frog"); }
Realm 对象
import io.realm.RealmObject import java.lang.IllegalArgumentException open class Frog // realm-required empty constructor : RealmObject() { var name: String? = null private var state: String = FrogState.TADPOLE.state var stateEnum: FrogState get() { // because state is actually a String and another client could assign an invalid value, // default the state to "TADPOLE" if the state is unreadable return try { // fetches the FrogState enum value associated with the current internal string value FrogState.valueOf(state) } catch (e: IllegalArgumentException) { FrogState.TADPOLE } } set(value) { // users set state using a FrogState, but it is saved as a string internally state = value.state } }
使用
val frog = realm.createObject(Frog::class.java) frog.name = "Jonathan Livingston Applesauce" // set the state using the enum frog.stateEnum = FrogState.FROG // fetching the state returns an enum val currentJonathanState: FrogState = frog.stateEnum