J2SE中的序列化的认识
Java以其简洁明了的程序设计风格著称,特别是在序列化这一功能上的设计更是体现了其“简单”的优势。在Java中,序列化的过程变得轻而易举,主要得益于ObjectInputStream和ObjectOutputStream的协助。
当我们谈论Java的序列化时,我们谈论的是一种简单而强大的机制。只要你的类实现了java.io.Serializable接口,你就可以轻松地将对象转换为字节流,这个过程称为序列化。而要实现这一功能,你只需依赖ObjectOutputStream的writeObject()方法。相反,要反序列化一个对象,即从一个字节流中恢复对象,你可以使用ObjectInputStream的readObject()方法。值得注意的是,Serializable接口并不需要你实现任何特定的方法。
为了更直观地理解这一过程,让我们通过一个简单的例子来。假设我们有一个名为Serial的类,它实现了java.io.Serializable接口。我们可以创建一个Serial的对象serial1,然后使用序列化的过程将其保存到一个文件中。之后,我们可以再次打开这个文件,进行反序列化的过程,将保存的对象恢复出来,并打印出其内容。
在Java的Stream包中,有一个名为Serial的类,由favo yang设计,实现了Serializable接口。这个类包含三个成员变量:pany_id(整型)、pany_addr(字符串)和pany_flag(布尔值)。它有一个默认构造函数和一个带有参数的构造函数,用于初始化这些变量。
在main方法中,创建了一个新的Serial对象serial1,并使用给定的参数进行初始化。然后,通过序列化和反序列化的过程,将serial1对象写入到文件"5.txt"中,并从该文件重新构建对象。这个过程涉及到多个流的创建和关闭,包括FileInputStream、FileOutputStream、ObjectInputStream和ObjectOutputStream。如果在这个过程中发生任何异常,都将打印出堆栈跟踪信息。打印出反序列化得到的对象的字符串表示。
让我们深入了解序列化和反序列化的过程。序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在这个例子中,通过ObjectOutputStream的writeObject方法,将Serial对象写入到文件中。反序列化则是将序列化的状态信息重新转换为对象的过程。通过ObjectInputStream的readObject方法,从文件中读取并构建新的Serial对象。
toString方法返回对象的字符串表示,这里返回的字符串包含pany_id、pany_addr和pany_flag的值。运行结果打印出DATA: 752 dayer street 5 building 02-287 false,表明成功打印了反序列化得到的对象的字符串表示。
这个Serial类是一个典型的JavaBean类,用于数据的封装和传输。它包含了getter和setter方法(尽管在代码中未显式写出),并且通过序列化和反序列化的过程,实现了对象在内存和文件之间的转换。这使得我们可以在不同的Java程序之间共享数据,或者在程序运行的不同阶段之间保存和恢复数据的状态。通过文件操作,我们还可以将数据持久化存储,以便在程序重新启动后仍然可以访问这些数据。
编程语言
- J2SE中的序列化的认识
- JS自动倒计时30秒后按钮才可用(两种场景)
- .NET 下运用策略模式(组合行为和实体的一种模式
- asp.net Repeater 数据绑定的具体实现(图文详解)
- php与c 实现按行读取文件实例代码
- .net decimal保留指定的小数位数(不四舍五入)
- Bootstrap popover 实现鼠标移入移除显示隐藏功能方
- PHP中类型转换 ,常量,系统常量,魔术常量的详解
- 使用vue-cli创建项目的图文教程(新手入门篇)
- 详解AngularJS中ng-src指令的使用
- 变量、函数、类的命名规则
- 不固定参数的存储过程实现代码
- PHP 99乘法表的几种实现代码
- JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲
- MySQL 5.7双主同步部分表的实现过程详解
- 关于处理GET方式提交的含有特殊字符的参数