Java序列化接口Serializable的功能简介说明
下文笔者讲述Serializable功能简介说明,如下所示
Serializable的功能
Serializable在java.io包中定义 用于将JAVA对象进行序列化和反序列化 序列化: 将一个JAVA对象以二进制流的方式持久化到数据库、文件中,或用于大对象暂存、网络传输、使用序列化实现深度克隆 反序列化: 将持久化在数据库或文件中的二进制数据 使用流的方式读取出来重新构造成一个和之前内容相同的JAVA对象 Serializable序列化接口没有任何方法或字段,只用于标识可序列化的语义 当一个对象实现Serializable接口 则这个对象中所有信息(除static、transient修饰的变量信息外) 的其它信息将自动序列化
serialVersionUID功能
通常情况下 serialVersionUID是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段 对象在反序列化时 如果serialVersionUID值不同,则会抛出InvalidClassException的异常,则反序列化失败例: User.java
import java.io.Serializable; /* * Serializable:用于给被序列化的类加入ID号。 * 用于判断类和对象是否是同一个版本。 */ public class User implements Serializable/*标记接口*/ { /** * transient:非静态数据不想被序列化可以使用这个关键字修饰。 */ private static final long serialVersionUID = 9527l; // private transient String name; private String name; // private static int age; private int age; public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }ObjectStreamDemo.java
public class ObjectStreamDemo { /** * @param args * @throws IOException * @throws ClassNotFoundException */ public static void main(String[] args) throws IOException, ClassNotFoundException { //writeObj(); readObj(); } public static void readObj() throws IOException, ClassNotFoundException { ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.object")); //对象的反序列化。 User p = (User)ois.readObject(); System.out.println(p.getName()+":"+p.getAge()); ois.close(); } public static void writeObj() throws IOException, IOException { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj.object")); //对象序列化。 被序列化的对象必须实现Serializable接口。 oos.writeObject(new User("java",18)); oos.close(); } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。