浅谈Java的序列化机制

本文深入探讨Java的序列化机制,包括概念、实现方式(序列化与反序列化)、工作原理,以及注意事项。强调序列化类及其中所有对象需实现Serializable接口,且在序列化ID不变的情况下,类的字段、方法更改可能导致反序列化失败。
摘要由CSDN通过智能技术生成

概念

一个对象如果想在硬盘上存储,一定就需要借助于一定的数据格式。这种把对象转换为硬盘存储的格式的过程就叫做对象的序列化,同样地,将这些文件再反向转换为程序中对象的操作就叫做反序列化

一些复杂的解决方案可能是将对象转换为json字符串的方式,这种方式的优点是易读,但是效率还是太低,所以Java的序列化的解决方案是将对象转换为一个二进制流的形式,来实现数据的持久化,本篇文章将会来详细讲解序列化的实现和原理

实现

准备

我们这里有一个普通的对象,要注意的是这个类和其中用到的所有对象都需要实现序列化接口Serializable:

class Demo implements Serializable {
   

    int val = 10;

    String time = new SimpleDateFormat("HH:mm:ss").format(new Date());

    A a = new A(20);

    @Override
    public String toString() {
   
        return "[hashcode=" + hashCode() + " val=" + val + ", time=" + time 
                + ", A.val=" + a.val +"]";
    }
}

这个A是一个普通的对象,如下:

class A implements Serializable {
   
    int val = 20;
    
    public A
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值