【发布时间】:2013-06-17 01:07:47
【问题描述】:
我有一个名为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 就会有问题。
需要说明吗?
【问题讨论】:
标签: android oop inheritance serialization parcelable