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();
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于