简析Java中的Serializable与Android中的Parcelable序列化

本文深入探讨了Java中的Serializable和Android中的Parcelable接口,解释了序列化和反序列化的概念,并分析了两者在实现原理和使用场景上的区别。Parcelable虽然实现较为复杂,但在性能上远超Serializable,适合Android开发中的数据传输需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于序列化

这篇文章主要来讲一下在安卓中关于序列化的问题。首先了解一个问题:什么是序列化?为什么要用到序列化?

  • 什么是序列化:序列化就是就是把一个对象变成可传输的二进制流,可以进行传输。
  • 什么是反序列化:与序列化对应,反序列化就是把一个二进制流转化成对象。
  • 哪里用到序列化:上面说到序列化就是把对象变得可传输;例如在内存,或者网络中传输数据的时候,就得把一个对象变成二进制流可以进行传输。除此之外,在各种通信中,例如进程间通信,文件读取写入等等都要用到序列化。涉及到数据传输,就得使用序列化。因为只有二进制流才可以进行传输。
  • 我们在那些地方会遇到序列化:我们会发现,仅有基本数据类型可以自动进行序列化,但是我的自定义对象并不可以进行序列化。在哪里可以体现呢?当我们从一个Activity向另外一个Activity传递数据的时候,通过Intent,我们会发现只能放基本数据类型。
  • 怎么让自定义的对象可序列化:就是我们要讲的Serializable和Parcelable接口。这两个接口就可以让我们的自定义对象可序列化。

那这两个接口怎么使用?他们有什么区别?这就是接下来我要讲的。

Serializable

简述原理

Serializable只要使用Java的ObjectOutputStream与ObjectInputStream来开启流。而这个接口主要就是用来标识这个对象可以被转换。关于IO流的相关知识,读者有兴趣可以去深入了解,这里不做深入探究。

怎么使用

这个序列化接口是Java提供的,实现了这个接口的类,其实例就可以进行传输。那么这个接口怎么使用呢?
直接实现这个接口就行了。
因为这是一个空接口,所以使用方法极其简单,只需要实现这个接口即可。接下来看个例子:

public class Test implements Serializable {
   
   
    private String string1;
    private String string2;
    private int num;
    private Son son;
    private List<Son> list = new ArrayList<>();

    public String getString1() {
   
   
        return string1;
    }
    public void setString1(String string1) {
   
   
        this.string1 = string1;
    }
    public String getString2() {
   
   
        return string2;
    }

    public void setString2(String string2) {
   
   
        this.string2 = string2;
    }

    public int getNum() {
   
   
        return num;
    }
    public void setNum(int num
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值