Parcelable&Serializable 序列化使用笔记

本贴最后更新于 2981 天前,其中的信息可能已经水流花落

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

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
pencilso
这个人很懒,什么也没有留下。

推荐标签 标签

  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    21 引用 • 31 回帖 • 1 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 5 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 645 关注
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    36 引用 • 200 回帖 • 31 关注
  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    34 引用 • 37 回帖 • 555 关注
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    167 引用 • 408 回帖 • 490 关注
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 269 回帖
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 191 关注
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 7 关注
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 654 关注
  • CodeMirror
    2 引用 • 17 回帖 • 166 关注
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 606 关注
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 3 关注
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 26 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 1 关注
  • 电影

    这是一个不能说的秘密。

    122 引用 • 608 回帖
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 613 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 5 关注
  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    209 引用 • 2040 回帖
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    291 引用 • 4495 回帖 • 661 关注
  • RemNote
    2 引用 • 16 回帖 • 22 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 438 关注
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    44 引用 • 208 回帖
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    554 引用 • 675 回帖
  • 笔记

    好记性不如烂笔头。

    310 引用 • 794 回帖 • 1 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 677 关注