我有一个名为ItinerarySegment
的类型数组,这个类型有子类:WalkSegment
、BusSegment
等。
public interface ItinerarySegment
{
}
public class WalkSegment implements ItinerarySegment
{
}
public class BusSegment implements ItinerarySegment
{
}
我制作
ItinerarySegment
的数组时应该遵循哪种策略才好? 这里最主要的问题是后续如何使用 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
会有问题。需要澄清吗?