我有一个名为 类型的数组ItinerarySegment
,并且这种类型有子类:WalkSegment
等BusSegment
。
public interface ItinerarySegment
{
}
public class WalkSegment implements ItinerarySegment
{
}
public class BusSegment implements ItinerarySegment
{
}
ItinerarySegment
制作parcelable数组时应该遵循什么样的策略?这里主要关心的是稍后通过createTypedArray方法(由writeTypedArray方法准备)重新构造数组时如何使用它。
其中createTypedArray方法采用Creator字段参数。问题出在这里...应该在哪里定义Creator字段?(在ItinerarySegment
、WalkSegment
或BusSegment
? 中)。
public static final Creator<Typename> CREATOR = new Parcelable.Creator<Typename>()
{
public Typename createFromParcel(Parcel in)
{
return new Typename(in);
}
public Typename[] newArray(int size)
{
return new Typename[size];
}
};
如果我创建ItinerarySegment
一个抽象类并定义Creator字段的方法,那么后续子类的数据将丢失,因为它们的构造函数都没有使用 Parcel 参数调用,而是ItinerarySegment
将调用 的构造函数。
constructor(Parcel in);
如果我WalkSegment
定义Creator字段,那么BusSegment
会有问题。
需要任何澄清吗?