21xrx.com
2024-11-22 13:08:00 Friday
登录
文章检索 我的文章 写文章
我最近学习了Java的serializable接口
2023-06-11 00:25:12 深夜i     --     --

我最近学习了Java的serializable接口,觉得非常有用。在这篇文章中,我想和大家分享我的一些经验和知识。下面是我的文章:

Java实现序列化

在Java中,使用serializable接口可以让对象在网络或文件中传输,并且可以将对象状态保存在磁盘上。实现serializable借口需要实现这个接口中的方法。下面是我写的例子代码:


import java.io.Serializable;

public class Student implements Serializable {

  private String name;

  private int age;

  public Student(String name, int age)

    this.name = name;

    this.age = age;

  

  public String getName()

    return name;

  

  public int getAge()

    return age;

  

}

这个例子中,我创建了一个名为Student的类,并实现了serialiable接口。这个类有两个私有成员变量,名字和年龄,以及一个get方法。

接下来,我将这个类序列化到文件和从文件中反序列化回来:


import java.io.*;

public class Main {

 public static void main(String[] args) {

  Student s = new Student("John", 20);

  // Serialization

  try {

   FileOutputStream fileOut = new FileOutputStream("student.ser");

   ObjectOutputStream out = new ObjectOutputStream(fileOut);

   out.writeObject(s);

   out.close();

   fileOut.close();

   System.out.println("Serialized data is saved in student.ser");

  } catch (IOException i) {

   i.printStackTrace();

  }

  // Deserialization

  try {

   FileInputStream fileIn = new FileInputStream("student.ser");

   ObjectInputStream in = new ObjectInputStream(fileIn);

   s = (Student) in.readObject();

   in.close();

   fileIn.close();

  } catch (IOException i) {

   i.printStackTrace();

  } catch (ClassNotFoundException c) {

   System.out.println("Student class not found");

   c.printStackTrace();

  }

  System.out.println("Student name: " +

    s.getName() + " Student age: " + s.getAge());

 }

}

在这个例子中,我将学生对象s序列化到文件中。在反序列化时,我使用FileInputStream和ObjectInputStream读取序列化的数据,并将其转换为Student对象。

总结

Java的serializable接口非常有用,可以让对象在网络和磁盘中传输和保存,使得Java编程更加灵活和强大。在这篇文章中,我向大家解释了如何使用这个接口实现序列化,并提供了例子代码。我希望这些信息对大家有所帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复