• 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);
      }
    } 
    

      

  • 相关阅读:
    poj1113--凸包(Andrew)
    php变量内存完全释放
    php的内存分配还是很智能的
    git 忽略权限记录一下
    开启事务处理插入多条数据 速度也可以
    var_dump(is_writeable(ini_get("session.save_path")));
    要注意一下xss攻击啊
    select *," as A from B union ...
    多次踩坑
    js instanceof运算符
  • 原文地址:https://www.cnblogs.com/hephec/p/4580005.html
Copyright © 2020-2023  润新知