java反序列化特性
时间: 2023-12-08 21:39:17 浏览: 84
Java反序列化有以下几个特性:
1. 反序列化需要与序列化时使用的类相同,否则会抛出ClassCastException异常。
2. 如果序列化时使用了serialVersionUID,反序列化时会检查该值是否与当前类的serialVersionUID相同,如果不同也会抛出InvalidClassException异常。
3. 静态属性不会被序列化,因为静态属性属于类而不是对象。
4. 被transient修饰的属性不会被序列化,因为transient表示该属性不需要被持久化。
5. 如果父类实现了Serializable接口,子类也会自动实现Serializable接口,因为子类包含了父类的所有属性和方法。
以下是一个Java反序列化的例子:
```java
import java.io.*;
public class DeserializeDemo {
public static void main(String[] args) {
Employee e = null;
try {
FileInputStream fileIn = new FileInputStream("employee.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
e = (Employee) in.readObject();
in.close();
fileIn.close();
} catch (IOException i) {
i.printStackTrace();
return;
} catch (ClassNotFoundException c) {
System.out.println("Employee class not found");
c.printStackTrace();
return;
}
System.out.println("Deserialized Employee...");
System.out.println("Name: " + e.name);
System.out.println("Address: " + e.address);
System.out.println("SSN: " + e.SSN);
System.out.println("Number: " + e.number);
}
}
```
阅读全文