序列化与反序列化(1)Serializable —— Java原生态方法

本文详细介绍了Android开发中对象序列化和反序列化的概念及实现,包括Serializable接口、Parcelable和Json的使用。通过一个示例展示了如何使用Serializable将Student对象保存到文件,并从文件中恢复,强调了异常处理在IO操作中的重要性。
摘要由CSDN通过智能技术生成

本文为学习笔记,所用的图片、案例均为教学视频截图

源视频地址:Android开发基础教程(2019)第35集 序列化(1)
作者:longway777

何为序列化

将对象转换为字节序列,完整的保存在磁盘上,或者通过网络发送出去。

在这里插入图片描述

反序列化就是将对象重新创建出来
在这里插入图片描述
序列化的三种方式
在这里插入图片描述

Serializable

java自带的接口,使用起来很简单,只需要一句话的标注就可以,具体实现也不需要做,全部是由jdk完成。缺点是效率不高,但对于应用程序级别已经够用。

Parcelable

专为安卓定制,深度优化,效率很高,在安卓系统的底层扮演了非常重要的角色,进程调度交换数据,交换对象等必不可少。

Json

基于文本的序列化,相对于二进制文件文本具有很高的可读性,广泛应用。

在这里插入图片描述

效果演示

本篇章先使用第一个方法,Serializable 实现对象的序列化以及反序列化。

通过输入内容,点击Save按钮后将对象保存在文件中(序列化),点击load读取文件中的内容,反序列化使对象重建并显示在屏幕上。
在这里插入图片描述

一、创建界面

在这里插入图片描述

二、创建student类

创建student类,包含属性名字、姓名、分数等,类要实现接口:Serializable。并且设置getter、setter,实现构造方法等。(具体看最后的源码)

alt+insert,选择构造,创建他们三个的构造方法。
在这里插入图片描述

完成他们的setter和gerter
在这里插入图片描述

三、点击按钮创建对象写入到文件中

在这里插入图片描述

try catch

没有处理可能发生的异常
在这里插入图片描述这种IO的操作,包括像是网络的操作,是不可靠的,不一定成功,可能会出错(比如文件不存在,磁盘故障),所以需要做异常处理避免应用程序产生异常而崩溃。

尝试执行

尝试执行try里面的内容,如果不成功就会返回一个异常值,这里把他打印出来。

举一个很简单的例子
在这里插入图片描述并且程序没有闪退
在这里插入图片描述SAVE完成后,点击执行:

在这里插入图片描述

在文件系统中可以找到创建的文件
在这里插入图片描述

是二进制序列的字节文件,看着像是乱码
在这里插入图片描述

可以用hex转换工具大致看看
在这里插入图片描述
在这里插入图片描述

toast的快速自动补全

输入Toast按下tab键自动补全
在这里插入图片描述

四、点击按钮反序列化重建对象

可能的错误,两个catch
在这里插入图片描述
快速try
在这里插入图片描述
点击按钮后反序列化并且对象重建在屏幕上
在这里插入图片描述

关键代码

虽然代码看似很多,但序列化真正涉及到的就是序列化后写入文件中,然后反序列化读出来,还有类要继承的接口

student.java

创建student类,包含属性名字、姓名、分数等,类要实现接口:Serializable。并且设置getter、setter,实现构造方法等。

//如果某个属性不需要序列化,可以添加关键字:transient
public class Student implements Serializable {
   
    private String name;
    private int age;
    private Score score;

    public Student(String name, int age, Score score) {
   
        this.name = name;
        this.age = age;
        this.score = score;
    }

    public String getName() {
   
        return name;
    }

    public void setName(String name) {
   
        this.name = name;
    }

    public int getAge() {
   
        return age;
    }

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值