Parcelable 序列化接口使用##
首先先实现 Parcelable 接口 以下是 JavaBean 的代码片段
import android.os.Parcel;
import android.os.Parcelable;
public class UserBean implements Parcelable {
private int id;
private String name;
private int age;
public UserBean(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
/**
* 该方法为Parcelable接口中的抽象方法 这里的返回值 返回0即可
*/
@Override
public int describeContents() {
return 0;
}
/**
* 该方法为Parcelable接口中的抽象方法
*
* @param dest
* 该对象为序列的操作对象 通过该对象 进行序列化属性
*/
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id); // 序列int类型
dest.writeString(name); // 序列String类型
dest.writeInt(age);
// --还有double等等类型 writeDouble .....
}
/**
* 添加一个反序列化属性的构造方法
*
* @param source
*/
private UserBean(Parcel source) {
/**
* 反序列化顺序 跟序列化的顺序一致
*/
id = source.readInt(); // 反序列化int类型
name = source.readString();// 反序列化String类型
age = source.readInt();
}
/**
* 实现Parcelable接口下的创建类
*/
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
/**
* 根据size大小 创建一个对象数组
*/
@Override
public UserBean[] newArray(int size) {
return new UserBean[size];
}
@Override
public UserBean createFromParcel(Parcel source) {
return new UserBean(source);
}
};
}
/**使用Intent传递
/--传递方:
UserBean ub = new UserBean();
Intent intent = new UserBean(1, "张三", 19);
intent.putExtra("user", ub);
startActivity(intent);
/--接收方:
UserBean ub = getIntent().getParcelableExtra("user");
Serializable 序列化接口使用
相对来说 Java 的 Serializable 接口使用要简单的多 并且 Serializable 是可以序列化到本地的而 Parcelable 则不支持
代码片段
import java.io.Serializable;
public class UserBean implements Serializable {
private static final long serialVersionUID = -1885454655185328146L;
private int id;
private String name;
private int age;
public UserBean(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "UserBean [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
/**使用Intent传递
/--传递方:
UserBean ub = new UserBean();
Intent intent = new UserBean(1, "张三", 19);
intent.putExtra("user", ub);
startActivity(intent);
/--接收方:
UserBean ub = (UserBean) getIntent().getSerializableExtra("user");
##Serializable 序列化到本地与反序列化##
/**
* 输出到本地文件当中
*/
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("file"));
out.writeObject(obj);
out.close();//一般close应该写在finally代码块中的
/**
* 从本地文件当中 反序列化成对象
*/
ObjectInputStream in = new ObjectInputStream(new FileInputStream("path"));
Object obj = in.readObject();
in.close();
##Serializable 使用 Socket 序列化输出与反序列化##
以前刚学 Java 的时候玩过 socket,当时还不知道 Json,于是就拿 Serializable 对象来传输数据了,记录一下用法。
/**
* 使用Socket输出Serializable
*/
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
out.close();
out.writeObject(obj);
/**
* 从socket反序列化推过来的Serializable
*/
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
Object obj = in.readObject();
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于