`
zhaibing_2008
  • 浏览: 25931 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

序列化心得

    博客分类:
  • Java
阅读更多
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();
		}	
	}
}


分享到:
评论

相关推荐

    序列化和反序列化doc文档.rar

    而“【笔记】序列化和反序列化.docx”可能包含作者对学习过程的总结和心得,对于深入理解这些概念很有帮助。“01预习资料.docx”可能提供了基本的概念介绍,是学习序列化和反序列化的好起点。 总的来说,序列化和反...

    在.NET中实现对象序列化

    对象序列化是软件开发中一个重要的概念,尤其是在分布式系统和跨平台数据交换中。在.NET框架中,对象的序列化是通过System.Xml.Serialization命名空间来实现的,这使得开发者能够将对象转换为XML格式的数据,方便...

    Dynamics CRM 2011 编程系列:实体JSON序列化脚本

    Dynamics CRM 2011编程系列文章将会介绍作者在日常开发中涉及到的技术和心得,其中包含:脚本开发,插件开发,系统配置以及系统的高级开发技巧。具体情况请关照博客:http://blog.csdn.net/ghostbear

    提升素质形成风格实现班会序列化.doc

    【提升素质形成风格实现班会序列化】是一个关于班主任专业化发展的工作总结,主要涉及如何通过系统性的培训和实践,提高班主任的素质,形成独特的教育风格,并实现班会的规范化和序列化。以下是对该主题的详细说明:...

    uml学习总结-类图、序列图

    UML(Unified Modeling Language,统一建模语言)是一种标准化的图形表示方法,用于软件密集型系统的可视化、描述、构造以及文档化工作。UML提供了多种图表工具,能够帮助开发者理解和设计复杂系统。根据描述,UML...

    python3内置持久化模块pickle心得

    `pickle`是Python的一个内置模块,用于实现Python对象的序列化和反序列化。通过`pickle`,我们可以将Python中的各种数据结构(如列表、字典、元组等)转换成一个字节流(bytes),这样就可以方便地在网络上传输或者...

    Ctypedptrlist模板类使用心得

    由于CObList继承自CObject,因此具备了`Serialize()`功能,这使得序列化和反序列化动态对象成为可能。第二个参数定义了列表中存储的对象类型,可以是你自定义类的指针。 CtypedPtrList提供了几个关键的成员函数: ...

    json辅助类库

    同时NewtonJson的序列化和反序列化的接口比较简单,相对的功能也比较强大。不过在使用中也不是没有坑的,所以把一些心得记录下,以备日后查询。 序列化和反序列化 序列化和反序列化很简单,调用相关的接口即可。...

    时间序列数据可视化研究综述*

    摘 要: 时间序列数据可视化综合了时间序列数据挖掘、数据可视化、计算机图形学、计算机交互技术等学科的理论和方法。从时间和数据两个角度分析了时间序列数据的特征;从用户的角度探讨了时间序列数据可视化的主要...

    LINGO 学习心得 数学建模软件

    【 LingO 学习心得与数学建模应用】 LingO 是一款强大的数学建模软件,主要用于解决线性、非线性、整数优化问题。它以其数学化的语言和直观的建模方式著称,使得复杂的数学模型能够简洁地表达。在学习 LingO 的过程...

    python3内置持久化模块shelve心得

    - **`pickle`**:主要用于单个对象的序列化和反序列化,没有提供额外的数据组织结构,适合于简单的数据存储需求。 - **`shelve`**:在 `pickle` 的基础上增加了字典式的接口,支持按键值对的方式存储多个对象,提供...

    JavaRMI分布式编程心得

    - 当传递复杂数据类型作为参数或返回值时,确保这些对象可以正确地序列化。 - 使用 `Serializable` 或 `Externalizable` 接口实现自定义序列化逻辑。 2. **安全性考虑:** - RMI 默认不允许从远程客户端加载类。...

    最新.net学习心得.pdf

    - 序列化与反序列化:获取或设置对象的私有字段,实现对象的序列化和反序列化。 - 动态代码执行:在运行时创建和执行新的代码块,常用于插件系统。 - 属性和字段的动态访问:即使在不知道具体类型的条件下,也能...

    EDA 检测序列 111

    电子设计自动化(Electronic Design Automation,简称EDA)是一种广泛应用于电子系统设计的技术,它通过计算机软件来辅助完成电路设计、逻辑综合、布局布线、信号完整性分析、电磁兼容性分析等复杂的设计任务。...

    关于缓存的一点心得

    5. **`serialize()` 和 `unserialize()`**:这两个函数用于序列化和反序列化对象或数组,这对于将复杂的数据结构存储为文件或从文件恢复非常有用。 6. **`fpassthru()`**:用于读取文件句柄直到文件结束,并将内容...

    序列检测器实验报告

    - **循环输入**:通过`initial`块初始化输入信号,使用`always@`块实现输入信号的循环更新。 - **时钟信号**:通过`always`块实现时钟信号的周期性变化。 #### 波形分析与实验心得 - **波形分析**: - 根据实验...

    VHDL语言100例源码 VHDL学习资料VHDL 编程要点VHDL编程心得体会.zip

    第19例 循环边界常数化测试 第20例 保护保留字 第21例 进程死锁 第22例 振荡与死锁 第23例 振荡电路 第24例 分辨信号与分辨函数 第25例 信号驱动源 第26例 属性TRANSACTION和分辨信号 第27例 块保护及属性EVENT, 第...

    DSP2812 学习心得

    ### DSP2812 学习心得:深入解析外设模块编程 在深入研究与实践DSP2812的过程中,对外设模块的编程有了更深刻的理解。以下将详细阐述几个关键知识点,包括ADC(模数转换器)的编程、中断控制、定时器配置以及状态...

    java反射机制的学习心得(csdn)————程序.pdf

    2. **序列化与反序列化**:在序列化和反序列化过程中,反射用于访问类的私有成员,实现对象状态的保存和恢复。 3. **动态代理**:Java的动态代理机制是基于反射的,可以创建一个代理类来实现多个接口,实现对目标...

Global site tag (gtag.js) - Google Analytics