我有一个接口IA和实现它们的类B和C。
B和C都实现了Parcelable
。
然后就有了难题:
类D有一个ArrayList<IA>
。我需要将B和C这两个类都插入到arraylist
中。它们具有相同的结构,但"IS-A"关系不适用。
我需要将D作为Parcel从一个活动传递到另一个活动中。
我尝试编写(ArrayList<IA>) in.readSerializable
,但是我遇到了IOException
。我知道如果IA不是接口,问题会很容易解决,但我似乎找不到解决这个问题的简单方法。
有什么想法吗?
@SuppressWarnings("unchecked")
public D (Parcel in) {
list = new ArrayList<IA>();
(...)
list = (ArrayList<IA>) in.readSerializable
}
@SuppressWarnings("rawtypes")
public static final Parcelable.Creator CREATOR =
new Parcelable.Creator() {
public D createFromParcel(Parcel in) {
return new D(in);
}
public D[] newArray(int size) {
return new D[size];
}
};
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel dest, int flags) {
(...)
dest.writeList(list);
}