- 在要将java对象保存到磁盘或者进行网络传输的时候,需要将这个java对象转换为二进制数据,也就是“序列化”,这里介绍的是使用实现Serializable接口来实现序列化的,实现Serializable接口非常简单,只要在类声明的后面加上implements Serializable就好了,不用实现什么方法。下面是将一个java对象序列化的示例,具体的讲解穿插在代码之中。
//将使用Person类的对象进行序列化,所以Person类要实现Serializable接口, // 很简单,就直接implements java.io.Serializable就行 public class Person implements java.io.Serializable{ private String name; private int age; public Person(String name, int age){ System.out.println("有参数的构造器"); 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; } public void speak(){ System.out.println("ok"); } }
//将一个实现了Serializable接口的Person类的对象保存到.tct文件中 import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; public class WriteObject { public static void main(String args[]){ try( ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.txt"))){ // ObjectOutputStream是处理流,要建立在结点流的基础上 Person person = new Person("孙悟空",500); oos.writeObject(person); // 这一步就是将序列化对象保存到文件中 }catch (IOException e){ e.printStackTrace(); } } } //运行程序之后,打开object.txt可以看到java对象(可能会有乱码问题)
-
从文件中读取java对象和将java对象保存到文件的过程差不多,需要指出的是:必须提供java对象所属的class文件,否则会引发异常。
-
可以从下面的例子看出来,程序并没有通过构造器来实例化对象
import java.io.FileInputStream; import java.io.IOException; import java.io.ObjectInputStream; public class ReadObject { public static void main(String args[]){ try{ ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.txt")); Person person = (Person)ois.readObject(); System.out.println(person.getAge() + "," + person.getName()); person.speak(); }catch (Exception e){ e.printStackTrace(); } } }
java输入输出(8)序列化和反序列化
猜你喜欢
转载自blog.csdn.net/weixin_39452731/article/details/82563025
今日推荐
周排行