java - 通过 aidl 接口(interface)传递枚举

标签 java android enums primitive aidl

由于枚举不是原始类型,在 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/

相关文章:

c - C语言中枚举的使用?

java - 一个元素上有多个相同类型的注释?

java - Android:如何根据当前位置(地理位置/地理代码)获取时间或时区

c++ - 什么是枚举类,我为什么要关心?

android - 一个简单的绘图示例

java - 在 JDK 7u2 上重写接口(interface)方法时出现 @override 编译器错误

java - 如何通过Spring注入(inject)扩展枚举?

java - 网络摄像头 api : Maximizing the 720p capture

java - 替换为某个关键字

JavaMail 附件第一行之前的内容配置