对象序列化

1.Serializable接口
2.Parcelable接口

Serializable接口

java中的接口,使用简单,开销大(IO操作多),主要用于将对象序列化到存储设备中或者通过网络传输对象。
标识接口,没有方法,直接实现这个接口就可以序列化用ObjectOutputStream和ObjectInputStream操作。

Parcelable接口

主要要用于在内存中序列化,效率高,android平台专属,一般用于Intent中传递对象

public class Person implements Parcelable {

    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //提供给Creator内部调用的私有构造方法
    //这里读的顺序要注意和下面写的顺序一样
    private Person(Parcel in) {
        this.name=in.readString();
        this.age=in.readInt();
    }

    public static final Creator<Person> CREATOR = new Creator<Person>() {
        @Override
        public Person createFromParcel(Parcel in) {
            //反序列化,调用内部的私有构造方法传入Parcel。
            return new Person(in);
        }

        @Override
        public Person[] newArray(int size) {
            return new Person[size];
        }
    };

    @Override
    public int describeContents() {
        //几乎所有情况下传入0(极少数情况传入1)
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        //序列化操作,注意和上面读的顺序要一样。
        dest.writeString(name);
        dest.writeInt(age);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容