易截截图软件、单文件、免安装、纯绿色、仅160KB

浅析Java序列化机制

    Java当中的序列化,其主要的作用是将类的实例进行无损传输,或者说就是通过Java的序列化机制,Java类的实例可以通过Object流来传输和重新获取,而不会损坏类的实例。
    首先,我们看看什么样的类是序列化类,
      1.A类自身实现了Serializable接口的类;
      2.A类自身没有实现Serializable接口,但其父类实现了Serializable接口的类;
    以上两种,我们认为是类A是序列化类。
    在SCJP考试当中就有一道关于序列化的题目:
    import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class Food implements Serializable{
Food() {
System.out.print("1");
}
}
class Fruit extends Food implements Serializable {
Fruit() {
System.out.print("2");
}
}
public class Banana2 extends Fruit {
int size = 42;
public static void main(String[] args) {
Banana2 b = new Banana2();
b.serializeBanana2(b); // assume correct serialization
b = b.deserializeBanana2(b); // assume correct
System.out.println(" restored " + b.size + " ");
}
// more Banana2 methods
public static void serializeBanana2(Banana2 b) {
try {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("c:/a.txt"));
out.writeObject(b);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Banana2 deserializeBanana2(Banana2 b) {
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream("c:/a.txt"));
return (Banana2) in.readObject();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

这道题的输出结果是:121 restored 42
    从运行结果来看:前连个数字12是显而易见的,在new Banana2()的时候执行的,但是第三个1就不好理解了,其实,如果从多态的角度考虑,也不难理解,因为反序列化是要得到原类的实例,而这就需要在反序列化之前就得声明一个原始类或者原


相关文档:

java入门

 Java学习从入门到精通 
一、 JDK (Java Development Kit) 
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的J ......

Java 7的主要变化

Devoxx 大会结束在几天前结束了,一位与会者对此次大会的重要内容进行了总结,他提到Java 7的主要变化如下:
  1.对collections的支持
  Java代码 
List<String> list = new ArrayList<String>();  
list.add("item");  
String item = list.get(0);  
  ......

Java中的字符编码与解码(转)

转 http://jiangzhengjun.javaeye.com/blog/506952
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Outp ......

使用java读取URL

import java.net.*;
import java.io.*;
public class ReadDemo
{
public static void main(String argv[])
{
try
{
URL url = new URL("http://blog.chinaunix.net/u/15586/showart_1863289.html");
BufferedRe ......

【广告】阿里巴巴ITBU急聘资深Java开发工程师

职位描述:
1、按USECASE进行业务需求分析和软件概要设计;
2、进行软件详细设计和编码实现,确保性能、质量和安全;
3、维护和升级现有软件产品,快速定位并修复现有软件缺陷。
职位要求:
1、精通Web编程,3年以上使用Java语言进行web开发的经验,熟悉html,javascript。
2、精通jsp,servlet,java bean,JM ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号