浅析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就不好理解了,其实,如果从多态的角度考虑,也不难理解,因为反序列化是要得到原类的实例,而这就需要在反序列化之前就得声明一个原始类或者原
相关文档:
create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int output,--每页显示记录条数
@currentpage int output,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列
......
package com.test.servlet;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.message.SOAPHeaderElement;
public class WebService {
&nbs ......
Annotations
Annotations是J2SE 5.0引入的新语言特性。通常, Annotations允许开发者用一种跟运行代码无关的次要信息来标注类,方法以及成员。这样就可以使用类似评价的 Annotations,比如“好方法”、“坏方法”,或者更详细一些,“不推荐的方法”、“覆写的方法&rdq ......
转 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 ......