发布于2021-03-13 14:20 阅读(1455) 评论(0) 点赞(6) 收藏(4)
接口 | 特点 | 适用场景 |
Serializable | Java中的序列化接口,使用简单,但是开销很大。 | 将对象序列化到存储设备或将对象序列化后通过网络传输时,用Serializable较简单。 |
Parcelable | Android中的序列化方式,使用稍麻烦,但效率很高。 | 主要用于内存序列化,性能好。 |
Serializable是一个空接口,为对象提供标准的序列化和反序列化操作。实现Serializable接口示例:
- public Class User implements Serializable {
- private static final long serialVersionUID = 92389236732922971L;
-
- public int userId;
- public String userName;
- public boolean isMale;
- }
注:
对象的序列化和反序列化操作:
- //序列化过程
- User user = new User(0, "joker", true);
- ObjectOutputStream out = new ObjectOutStream( new FileOutputStream("cache.txt") );
- out.writeObject(user);
- out.close();
-
- //反序列化过程
- ObjectInputStream in = new ObjectInputStream( new FileInputStream("cache.txt") );
- User user = (User) in.readObject();
- in.close();
Parcelable接口实现示例:
- public class User implements Parcelable {
- public int userID;
- public String userName;
- public boolean isMale;
-
- public Book book;
-
- public User (int userID, String userName, boolean isMale) {
- this.userID= userID;
- this.userName= userName;
- this.isMale= isMale;
- }
-
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeInt(this.userID);
- dest.writeString(this.userName);
- dest.writeInt(isMale ? 1 : 0);
- dest.writeParcelable(book, 0);
- }
-
- protected User(Parcel in) {
- this.userID= in.readInt();
- this.userName= in.readString();
- this.isMale= in.readInt() == 1;
- this.book= in.readParcelable(Thread.currentThread().getContextClassLoader());
- }
-
-
- public static final Creator<User> CREATOR = new Creator<User>() {
- @Override
- public User createFromParcel(Parcel source) {
- return new User(source);
- }
-
- @Override
- public User[] newArray(int size) {
- return new User[size];
- }
- };
-
- }
方法 | 功能 | 标记位 |
---|---|---|
createFromParcel | 从序列化后的对象中创建原始对象 | |
newArray(int size) | 创建指定长度的原始对象数组 | |
User(Parcel in) | 从序列化后的对象中创建原始对象 | |
writeToParcel(Parcel out, int flags) | 将当前对象写入序列化结构中,其中flags为标志位,1表示当前对象需要作为返回值返回,不能立即释放。一般情况都用0。 | PARCELABLE_WRITE_RETURN_VALUE |
describeContents | 返回当前对象的内容描述,如果含有文件描述符,返回1,否则返回0。一般为0。 | CONTENTS_FILE_DESCRIPTOR |
原文链接:https://blog.csdn.net/wishxiaozhu/article/details/114675143
作者:木得事
链接:http://www.javaheidong.com/blog/article/114174/955e6520713480f3193c/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!