19、Java 序列化

1使

IOJava

IO*Java

Java使

使

1

2使

3

RMIremote method invoke,javaJavaBeanSerializeable

2

使;

(1)

(2)

3Java

3.1 使Serializable

Student

package com.example.main;

import java.io.*;

/**
* @author lin
* @version 1.0
* @date 2020/7/11 22:04
* @Description TODO
*/
public class Student implements Serializable {
   /**
    * 
    */
   private static final long serialVersionUID = 1111013L;
   private String name;
   private String gender;

   public String getName() {
       return name;
  }

   public void setName(String name) {
       this.name = name;
  }

   public String getGender() {
       return gender;
  }

   public void setGender(String gender) {
       this.gender = gender;
  }

   @Override
   public String toString() {
       return "Student{" +
               "name='" + name + ''' +
               ", gender='" + gender + ''' +
               '}';
  }

   /**
    * 
    */
   private static void serializeStudent() {
       try {
           Student student = new Student();
           student.setName("");
           student.setGender("");
           //    
           ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("D://student"));
           os.writeObject(student);
           os.close();
           System.out.println("");
      } catch (IOException e) {
           e.printStackTrace();
      }
  }

   /**
    * 
    */
   private static void deSerializeStudent() {
       try {
           ObjectInputStream is = new ObjectInputStream(new FileInputStream("D://student"));
           Student stu = (Student) is.readObject();
           System.out.println(":" + stu.toString());
           is.close();
      } catch (IOException | ClassNotFoundException e) {
           e.printStackTrace();
      }
  }

   public static void main(String[] args) {
       serializeStudent();
       deSerializeStudent();
  }
}


:Student{name='', gender=''}

3.2 使Externalizable

Person

package com.example.main;

import java.io.*;

/**
* @author lin
* @version 1.0
* @date 2020/7/11 22:18
* @Description TODO
*/
public class Person implements Externalizable {
   private String name;
   private int 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 Person(String name, int age) {
       this.name = name;
       this.age = age;
  }

   public Person() {
  }

   @Override
   public String toString() {
       return "Person{" +
               "name='" + name + ''' +
               ", age=" + age +
               '}';
  }

   @Override
   public void writeExternal(ObjectOutput out) throws IOException {
       //name
       StringBuffer reverse = new StringBuffer(name).reverse();
       System.out.println(reverse.toString());
       out.writeObject(reverse);
       out.writeInt(age);
  }

   @Override
   public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
       //name
       this.name = ((StringBuffer) in.readObject()).reverse().toString();
       System.out.println(name);
       this.age = in.readInt();
  }

   public static void main(String[] args) throws Exception {
       ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Person.txt"));
       ObjectInputStream ois = new ObjectInputStream(new FileInputStream("Person.txt"));
       oos.writeObject(new Person("brady", 23));
       Person ep = (Person) ois.readObject();
       System.out.println(ep);
  }
}

:

ydarb
brady
Person{name='brady', age=23}

SerializableExternalizable
Java

ExternalizableSerializable

4java

4.1 serialVersionUID

InvalidClassExceptionSerialVersionUid

4.2

,,,write read 使,,

. static

1

2

4.3 Transient

Transient transient int 0 null

Studentgender :

private transient String gender;

:


:Student{name='', gender='null'}

5

java

1. javaBeanSerializable
2. transient
3. 使transient
4. 
5. class
6. 
7. readResolve()
8. 
9. serialVersionUID 便


                

圈~

 注公众号

原文地址:https://www.cnblogs.com/naimao/p/13353341.html