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);
}
}