当前位置 > 主页 > 万和大讲堂 >


南京万和Java学习笔记——序列化

2015-11-27 11:06

  所谓的对象序列化(在很多地方也被成为串行化),是指将对象转换成二进制数据流的一种实现手段。通过将对象序列化,可以方便地实现对象的传输及保存。南京Java培训


  在Java中提供有ObjectInputStream与ObjectOutputStream这两个类用于序列化对象的操作。这两个类是用于存储和独缺对象的输入输出流类,只要把对象中的所有成员变量都存储起来,就等于保存了这个对象,之后从保存的对象之中再将对象读取进来就可以继续使用此对象。ObjectInputStream类与ObjectOutputStream类,用于帮助开发者完成保存和读取对象成员变量取值的过程,但要求读写或存储的对象必须实现了Serializable接口,但Serializable接口中没有定义任何方法,仅仅被用作一种标志,已被编译器作特殊处理。南京Java培训


  下面是对象的序列化范例:


  import java.io.* ;


  public class Person implements Serializable


  {


  private String name ;


  private int age ;


  public Person(String name,int age)


  {


  this.name = name ;


  this.age = age ;


  }


  public String toString()


  {


  return " 姓名:"+this.name+",年龄:"+this.age ;


  }


  };


  这个类实现了Serializable接口,所以此类的对象可序列化。下面的范例使用ObjectOutputStream与ObjectInputStream将Person类的对象保存在文件之中:


  import java.io.*;


  public class SerializableDemo


  {


  public static void main( String args[] ) throws Exception


  {


  File f = new File("SerializedPerson") ;


  serialize(f);


  deserialize(f);


  }


  // 以下方法为序列化对象方法


  public static void serialize(File f) throws Exception


  {


  OutputStream outputFile = new FileOutputStream(f);


  ObjectOutputStream cout = new ObjectOutputStream(outputFile);南京Java培训


  cout.writeObject(new Person("张三",25));


  cout.close();


  }


  // 以下方法为反序列化对象方法


  public static void deserialize(File f) throws Exception


  {


  InputStream inputFile = new FileInputStream(f);


  ObjectInputStream cin = new ObjectInputStream(inputFile);


  Person p = (Person) cin.readObject();


  System.out.println(p);


  }


  }


  在程序中声明了一个deserialize()方法,此方法用于从文件中读取已经保存的对象。南京Java培训


  另外,如果不希望类中的某个属性被序列化,可以在声明属性之前加上transient关键字。用这个关键字修饰的属性没有被保存下来,输出时,将输出默认值。


最近开班 more>
  • Web前端开发
  • 软件测试
  • 软件测试预科班
  • AI大模型+全栈开发开班
  • 云原生精英班
  • 云网预科班
  • 开发课程基础班第三期
  • 开发课程基础班第二期
  • 开发课程基础班第五期
  • Java全栈
  • CISP
  • HCIP-cloud
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • OCP 19C
  • RHCA
  • 6月9日
  • 5月21日
  • 5月14日
  • 6月9日
  • 5月7日
  • 5月26日
  • 5月19日
  • 5月12日
  • 6月3日
  • 6月9日
  • 随时开课
  • 7月12日
  • 5月19日
  • 5月19日
  • 5月7日
  • 5月10日
  • 5月24日
  • 5月24日
  • 随时开课
  • 随时开课
    • 姓 名 :
    • 电 话 :
    • 课 程 :

技术交流群

  • Java大数据交流群560819979加入
  • Python技术交流群595083299加入
  • Oracle技术交流群595119011加入
  • Web前端技术交流群604697610加入
  • Huawei技术交流群482919361加入
  • Redhat技术交流群587875348加入
  • UI设计技术交流群511649801加入
  • Cisco技术交流群596886705加入
  • IT运维技术交流群605888381加入