黑马程序员_IO流(对象的序列化和反序列化)
来源:互联网 发布:索尼 网络授权经销商 编辑:程序博客网 时间:2024/05/16 04:46
ObjectOutputStream-对象的序列化
public class Io55_1 { public static void main(String[] args) throws IOException { writeObj(); } public static void writeObj() throws IOException, IOException { ObjectOutputStream oos=new ObjectOutputStream( new FileOutputStream("obj.object")); //对象序列化。被序列化的对象必须实现Serializable接口 oos.writeObject(new Person("小强",30)); oos.close(); }}public class Person implements Serializable/*标记接口*/{ private String name; 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; }}
IO流(ObjectInputStream-对象的反序列化)
public class Io56_1 { public static void main(String[] args) throws IOException, ClassNotFoundException { readObj(); } //反序列化(就是读取Object对象) private static void readObj() throws IOException, ClassNotFoundException { ObjectInputStream ois=new ObjectInputStream(new FileInputStream("obj.object")); Person p=(Person) 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 Person("小强",30)); oos.close(); }}
其他提醒
/* * 实现Serializable接口用于给被序列化的类加入ID号 * 用于判断类和对象是不是同一个版本 * */public class Person implements Serializable/*标记接口*/{ /*IO57 * private static final long serialVersionUID = 9527L;如果不写。每一次编译的时候。可能会因为编译器的 * 不同,或者修改的Person类的内容。就会可能导致Serializable产生的serialVersionUID不一致。就会导致 * 不能够反序列化(读取文件中的内容)不能完成。 * * 如果定义了该serialVersionUID = 9527L(值随便写);就不会让虚拟机自己计算产生serialVersionUID。故就可以 * 保证serialVersionUID的一致。就能够保证可以正常的反序列化 */ private static final long serialVersionUID = 9527L; /*IO58 * transient:非静态数据不想被序列化可以使用这个关键字 * * static修饰的数据。不会被序列化。(结果age=0,是因为在方法区里面会有一个默认值就是0) * **/ private transient String name; private static 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; }}
0 0
- 黑马程序员_IO流(对象的序列化和反序列化)
- 黑马程序员_IO流——对象的序列化
- 黑马程序员_Java对象的序列化和反序列化实践
- 黑马程序员_Java基础_IO流(对象序列化和字符编码)
- 黑马程序员-面向对象多态的实现及对象序列与反序列化
- 黑马程序员- C# - 序列化和反序列化
- 黑马程序员 C#序列化和反序列化简介
- 【黑马程序员】java中----------对象的序列化与反序列化
- 黑马程序员——JAVA基础---对象的序列化与反序列化
- 黑马程序员_IO流四(对象的序列化,管道流,RandomAccessFile,DataStream,ByteArrayStream)
- 黑马程序员_IO流4_(对象的序列化,管道流,RandomAccessFile,DataStream,ByteArrayStream)
- 对象序列化和反序列化
- 对象序列化和反序列化
- 对象序列化和反序列化
- 对象序列化和反序列化
- 对象序列化和反序列化
- 对象序列化和反序列化
- 对象序列化和反序列化
- C++ Overloading (Operator and Function)
- C++ function overriding
- Memory Layout of C programs
- 结构体中的 char *name & char name[20]
- Memory : Stack vs Heap
- 黑马程序员_IO流(对象的序列化和反序列化)
- 事件篮方法 - 如何管理好自己的时间
- 黑马程序员_IO流(RandomAccessFile)
- The difference between JS and jQuery
- C++中while(std::cin >> value)的思考
- foo
- C语言结构体的对齐原则
- 结构体的数组成员变量对齐
- spring重装