可包裹和盒装 类
Parcelable and boxed classes
我有以下 class:
public class E implements Parcelable {
@SerializedName("a")
private String a= null;
@SerializedName("b")
private BigDecimal b= null;
@SerializedName("c")
private String c= null;
@SerializedName("d")
private String d= null;
protected E(Parcel in) {
number = in.readString();
expirationYear = in.readString();
expirationMonth = in.readString();
}
public static final Creator<E> CREATOR = new Creator<E>() {
@Override
public E createFromParcel(Parcel in) {
return new E(in);
}
@Override
public E[] newArray(int size) {
return new E[size];
}};
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(number);
dest.writeString(expirationYear);
dest.writeString(expirationMonth);
}
}
数据成员b如何打包?或者更好的是,如何包裹盒装类型?
如您所见,writeToParcel 方法缺少数据成员 b 以及受保护的 c'tor。
How to use Parcelable on non-primitive types?
解决此问题的一个好方法(在我看来)是创建 class 扩展 BigDecimal 并在其上实现 Parcelable 接口。
我有以下 class:
public class E implements Parcelable {
@SerializedName("a")
private String a= null;
@SerializedName("b")
private BigDecimal b= null;
@SerializedName("c")
private String c= null;
@SerializedName("d")
private String d= null;
protected E(Parcel in) {
number = in.readString();
expirationYear = in.readString();
expirationMonth = in.readString();
}
public static final Creator<E> CREATOR = new Creator<E>() {
@Override
public E createFromParcel(Parcel in) {
return new E(in);
}
@Override
public E[] newArray(int size) {
return new E[size];
}};
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(number);
dest.writeString(expirationYear);
dest.writeString(expirationMonth);
}
}
数据成员b如何打包?或者更好的是,如何包裹盒装类型?
如您所见,writeToParcel 方法缺少数据成员 b 以及受保护的 c'tor。
How to use Parcelable on non-primitive types?
解决此问题的一个好方法(在我看来)是创建 class 扩展 BigDecimal 并在其上实现 Parcelable 接口。