由于枚举不是原始类型,在 Android 中通过 aidl 接口(interface)传递枚举的最有效方法是什么?有没有办法先将枚举转换为序数?
最佳答案
我只是用
String enumString = myEnum.name()
(以 MyEnum 作为枚举,以 myEnum 作为值)获取字符串表示,然后
MyEnum myEnum = MyEnum.valueOf(enumString)
从字符串表示中重建枚举。
使用序号可能会快一点,但如果我稍后添加枚举,这更有可能破坏旧代码。
//编辑:因为我不喜欢将 String 作为返回类型,所以我现在实现了 Parcellable,就像这里提到的:Passing enum or object through an intent (the best solution)
导入android.os.Parcel; 导入 android.os.Parcelable;
enum InitResponse implements Parcelable {
// Everything is fine.
SUCCESS,
// Something else
FOO;
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(final Parcel dest, final int flags) {
dest.writeString(name());
}
public static final Creator<InitResponse> CREATOR = new Creator<InitResponse>() {
@Override
public InitResponse createFromParcel(final Parcel source) {
return InitResponse.valueOf(source.readString());
}
@Override
public InitResponse[] newArray(final int size) {
return new InitResponse[size];
}
};
}
关于java - 通过 aidl 接口(interface)传递枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4936983/