浅析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项目还是web项目)
String relativelyPath=System.getProperty("user.dir");
上述相对路径中,java项目中的 ......
Devoxx 大会结束在几天前结束了,一位与会者对此次大会的重要内容进行了总结,他提到Java 7的主要变化如下:
1.对collections的支持
Java代码
List<String> list = new ArrayList<String>();
list.add("item");
String item = list.get(0);
......
package innerClass.test;
public class InheritTest
{
public static void main(String[] args)
{
Person p = new Person("LMS");
p.show();
  ......
1. 首先String不属于8种基本数据类型,String是一个对象。
因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。
2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null;
3. String str=”kvill”;
String str=n ......
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 ......