イベントと小包
JavaなのでついついJFC/Swingと比較してしまうのだが、Androidのイベントは基底クラスを持たない。
public final class MotionEvent implements Parcelable { 〜 }
代わりにParcelableという、一風変わった直列化/非直列化のためのインタフェースを実装する。
public interface Parcelable { public static final int PARCELABLE_WRITE_RETURN_VALUE = 0x0001; public static final int CONTENTS_FILE_DESCRIPTOR = 0x0001; public int describeContents(); public void writeToParcel(Parcel dest, int flags); public interface Creator{ public T createFromParcel(Parcel source); public T[] newArray(int size); } }
直列化/非直列化ということなので、writeParcelメソッドは想像できるが、であればreadParcelメソッドは何故ないのか。また、内部にインナークラスならぬインナーインタフェースがある。
createFromParcelメソッドからして、非直列化はこのインタフェースを介して行うらしいが、どうしてこんな作りになっているんだろう。
Parcelableを非直列化するには、Parcelクラスの力を借りる必要がある。どうやらその辺に秘密がありそうだ。