zoukankan      html  css  js  c++  java
  • Java object serialization

     

    Java object serialization

    This tutorial explains how to use Java serialization and de-serialization

     

    1. Java Serialization

    Via Java Serialization you can stream your Java object to a sequence of byte and restore these objects from this stream of bytes. To make a Java object serializable you implement the java.io.Serializable interface. This is only a marker interface which tells the Java platform that the object is serializable.

    Certain system-level classes such as ThreadOutputStream and its subclasses, and Socket are not serializable. If you serializable class contains such objects, it must mark then as "transient".

     

    2. Example

    Create a Java project called "de.vogella.java.serilization". Create the following Java object called Person.

     
    
    package de.vogella.java.serilization;
    
    import java.io.Serializable;
    
    public class Person implements Serializable {
      private String firstName;
      private String lastName;
      // stupid example for transient
      transient private Thread myThread;
    
      public Person(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.myThread = new Thread();
      }
    
      public String getFirstName() {
        return firstName;
      }
    
      public void setFirstName(String firstName) {
        this.firstName = firstName;
      }
    
      public String getLastName() {
        return lastName;
      }
    
      public void setLastName(String lastName) {
        this.lastName = lastName;
      }
    
      @Override
      public String toString() {
        return "Person [firstName=" + firstName + ", lastName=" + lastName
            + "]";
      }
    
    } 
     
    

      

    The following code example show you how you can serializable and de-serializable this object.

    package de.vogella.java.serilization;
    
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    
    public class Main {
      public static void main(String[] args) {
        String filename = "time.ser";
        Person p = new Person("Lars", "Vogel");
    
        // save the object to file
        FileOutputStream fos = null;
        ObjectOutputStream out = null;
        try {
          fos = new FileOutputStream(filename);
          out = new ObjectOutputStream(fos);
          out.writeObject(p);
    
          out.close();
        } catch (Exception ex) {
          ex.printStackTrace();
        }
        // read the object from file
        // save the object to file
        FileInputStream fis = null;
        ObjectInputStream in = null;
        try {
          fis = new FileInputStream(filename);
          in = new ObjectInputStream(fis);
          p = (Person) in.readObject();
          in.close();
        } catch (Exception ex) {
          ex.printStackTrace();
        }
        System.out.println(p);
      }
    } 
    

      

  • 相关阅读:
    一个涉及到浮点寄存器的CM
    树和二叉树一篇就搞定!
    串的两种模式匹配方式(BF/KMP算法)
    队列的知识讲解与基本实现(数据结构)
    如何用C++实现栈
    判断List集合为空还是null的正确打开方式
    双链表的基本实现与讲解(C++描述)
    Redis从认识安装到实现增删改查
    如何使用C++实现单链表
    线性表——顺序表的实现与讲解(C++描述)
  • 原文地址:https://www.cnblogs.com/hephec/p/4580005.html
Copyright © 2011-2022 走看看