package SerializeDemo;
import java.io.*;
public class Fruit implements Serializable {
int size = 42;
Fruit(String s) {
System.out.println("fruit...");
}
Fruit() {
System.out.println("fruit...");
}
}
package SerializeDemo;
import java.io.*;
public class Apple extends Fruit{
int as = 3;
private transient String s = "I'm not serializable..." ;
public Apple() {
// super("aa");
System.out.println("the as is :" + as);
}
public void writeObject(ObjectOutputStream os) {
try {
os.defaultWriteObject();
os.writeObject(s);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("invoke the writeObject...");
}
public void readObject(ObjectInputStream os) {
System.out.println("invoke the readObject...");
try {
os.defaultReadObject();
// s = (String)os.readObject();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public Apple readApple(FileInputStream is) {
Apple a = null;
try {
ObjectInputStream ois = new ObjectInputStream(is);
a = (Apple)ois.readObject();
ois.close();
}
catch(Exception e) {
e.printStackTrace();
}
return a;
}
public void saveApple(FileOutputStream os,Object obj) {
try {
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(obj);
oos.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
FileOutputStream fos = new FileOutputStream("Apple.txt");
FileInputStream fis = new FileInputStream("Apple.txt");
Apple a = new Apple();
a.size = 20; //super original 42
a.as = 20;
a.saveApple(fos, a);
Apple b = a.readApple(fis);
// System.out.println("b.size is:"+b.size+"\tb.as is:"+b.as);
System.out.println("b.size is:"+b.size+"\tb.as is:"+b.as+"\tb.food is:"+b.s);
}
catch(Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
而“【笔记】序列化和反序列化.docx”可能包含作者对学习过程的总结和心得,对于深入理解这些概念很有帮助。“01预习资料.docx”可能提供了基本的概念介绍,是学习序列化和反序列化的好起点。 总的来说,序列化和反...
对象序列化是软件开发中一个重要的概念,尤其是在分布式系统和跨平台数据交换中。在.NET框架中,对象的序列化是通过System.Xml.Serialization命名空间来实现的,这使得开发者能够将对象转换为XML格式的数据,方便...
Dynamics CRM 2011编程系列文章将会介绍作者在日常开发中涉及到的技术和心得,其中包含:脚本开发,插件开发,系统配置以及系统的高级开发技巧。具体情况请关照博客:http://blog.csdn.net/ghostbear
【提升素质形成风格实现班会序列化】是一个关于班主任专业化发展的工作总结,主要涉及如何通过系统性的培训和实践,提高班主任的素质,形成独特的教育风格,并实现班会的规范化和序列化。以下是对该主题的详细说明:...
UML(Unified Modeling Language,统一建模语言)是一种标准化的图形表示方法,用于软件密集型系统的可视化、描述、构造以及文档化工作。UML提供了多种图表工具,能够帮助开发者理解和设计复杂系统。根据描述,UML...
`pickle`是Python的一个内置模块,用于实现Python对象的序列化和反序列化。通过`pickle`,我们可以将Python中的各种数据结构(如列表、字典、元组等)转换成一个字节流(bytes),这样就可以方便地在网络上传输或者...
由于CObList继承自CObject,因此具备了`Serialize()`功能,这使得序列化和反序列化动态对象成为可能。第二个参数定义了列表中存储的对象类型,可以是你自定义类的指针。 CtypedPtrList提供了几个关键的成员函数: ...
同时NewtonJson的序列化和反序列化的接口比较简单,相对的功能也比较强大。不过在使用中也不是没有坑的,所以把一些心得记录下,以备日后查询。 序列化和反序列化 序列化和反序列化很简单,调用相关的接口即可。...
摘 要: 时间序列数据可视化综合了时间序列数据挖掘、数据可视化、计算机图形学、计算机交互技术等学科的理论和方法。从时间和数据两个角度分析了时间序列数据的特征;从用户的角度探讨了时间序列数据可视化的主要...
【 LingO 学习心得与数学建模应用】 LingO 是一款强大的数学建模软件,主要用于解决线性、非线性、整数优化问题。它以其数学化的语言和直观的建模方式著称,使得复杂的数学模型能够简洁地表达。在学习 LingO 的过程...
- **`pickle`**:主要用于单个对象的序列化和反序列化,没有提供额外的数据组织结构,适合于简单的数据存储需求。 - **`shelve`**:在 `pickle` 的基础上增加了字典式的接口,支持按键值对的方式存储多个对象,提供...
- 当传递复杂数据类型作为参数或返回值时,确保这些对象可以正确地序列化。 - 使用 `Serializable` 或 `Externalizable` 接口实现自定义序列化逻辑。 2. **安全性考虑:** - RMI 默认不允许从远程客户端加载类。...
- 序列化与反序列化:获取或设置对象的私有字段,实现对象的序列化和反序列化。 - 动态代码执行:在运行时创建和执行新的代码块,常用于插件系统。 - 属性和字段的动态访问:即使在不知道具体类型的条件下,也能...
电子设计自动化(Electronic Design Automation,简称EDA)是一种广泛应用于电子系统设计的技术,它通过计算机软件来辅助完成电路设计、逻辑综合、布局布线、信号完整性分析、电磁兼容性分析等复杂的设计任务。...
5. **`serialize()` 和 `unserialize()`**:这两个函数用于序列化和反序列化对象或数组,这对于将复杂的数据结构存储为文件或从文件恢复非常有用。 6. **`fpassthru()`**:用于读取文件句柄直到文件结束,并将内容...
- **循环输入**:通过`initial`块初始化输入信号,使用`always@`块实现输入信号的循环更新。 - **时钟信号**:通过`always`块实现时钟信号的周期性变化。 #### 波形分析与实验心得 - **波形分析**: - 根据实验...
第19例 循环边界常数化测试 第20例 保护保留字 第21例 进程死锁 第22例 振荡与死锁 第23例 振荡电路 第24例 分辨信号与分辨函数 第25例 信号驱动源 第26例 属性TRANSACTION和分辨信号 第27例 块保护及属性EVENT, 第...
### DSP2812 学习心得:深入解析外设模块编程 在深入研究与实践DSP2812的过程中,对外设模块的编程有了更深刻的理解。以下将详细阐述几个关键知识点,包括ADC(模数转换器)的编程、中断控制、定时器配置以及状态...
2. **序列化与反序列化**:在序列化和反序列化过程中,反射用于访问类的私有成员,实现对象状态的保存和恢复。 3. **动态代理**:Java的动态代理机制是基于反射的,可以创建一个代理类来实现多个接口,实现对目标...