enum 实现 Parcelable 接口
当你创建一个枚举,想要使用上述插件时,就会发现无法序列号。这个是因为 Parcel.writeXXX 没有写入枚举的方法,所以无法直接实现 Parcelable。
这个时候,我们只需要定义一个转换规则,将枚举转换为 `Parcel` 可以写入的类型,并且支持从 `Parcel` 获取变量找到对应的枚举即可。
public enum Fruit implements Parcelable {
/**
* 水果
*/
APPLE,
BANANA,
WATERMELON;
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
//存入枚举常量的序数
dest.writeInt(ordinal());
}
public static final Creator<Fruit> CREATOR = new Creator<Fruit>() {
@Override
public Fruit createFromParcel(Parcel in) {
//通过枚举常量的序数找到对应的枚举类型
return Fruit.values()[in.readInt()];
}
@Override
public Fruit[] newArray(int size) {
return new Fruit[size];
}
};
}