Docs 菜单
Docs 主页
/ /
数据类型

枚举 — Java 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

后退

混合

在此页面上