29.Serializable

发表日期:2022-08-05 16:41:10 | 来源: | | 浏览(1016) 分类:JAVA基础

Pet

import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;


public class Pet implements Externalizable{
   
   private static final long serialVersionUID = 1L;
   private String name ;
   private int age ;
   private String sex ;

   public Pet(){}
   
   public Pet(String name , int age , String sex){
      setName(name);
      setAge(age);
      setSex(sex);
   }

   public String toString() {
      return "姓名:"+name+" 年龄:"+age+" 性别:"+sex;
   }
   
   @Override
   public void readExternal(ObjectInput in) throws IOException,
         ClassNotFoundException {
      // TODO Auto-generated method stub
      setName((String) in.readObject());
      setAge(in.readInt());
      //setSex((String) in.readObject());  Sex就不会被保存
   }

   @Override
   public void writeExternal(ObjectOutput out) throws IOException {
      // TODO Auto-generated method stub
      out.writeObject(getName());
      out.writeInt(getAge());
      //out.writeObject(getSex());
   }

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

   public String getName() {
      return name;
   }

   public void setAge(int age) {
      this.age = age;
   }

   public int getAge() {
      return age;
   }

   public void setSex(String sex) {
      this.sex = sex;
   }

   public String getSex() {
      return sex;
   }

}

Person

import java.io.Serializable;


public class Person implements Serializable{

   /**
    * 
    */
   private static final long serialVersionUID = 1L;
   
   private String name ;
   private int age ;
   private transient String sex ;//transient 声明的变量不会被序列号
   
   public Person(String name, int age , String sex) {
      // TODO Auto-generated constructor stub
      setName(name);
      setAge(age);
      setSex(sex);
   }

   public String toString() {
      return "姓名:"+name+" 年龄:"+age+" 性别:"+sex;
   }

   public void setName(String name) {
      this.name = name;
   }
   
   public String getName() {
      return name;
   }
   
   public void setAge(int age) {
      this.age = age;
   }
   
   public int getAge() {
      return age;
   }

   public void setSex(String sex) {
      this.sex = sex;
   }

   public String getSex() {
      return sex;
   }
   

}

ObjectOutputStreamDemo

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;


public class ObjectOutputStreamDemo {

    /**
     * @param args
     * @throws IOException
     * @throws ClassNotFoundException
     */
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        // TODO Auto-generated method stub

        File file = new File("D:" + File.separator + "javademo.txt");


        OutputStream out = new FileOutputStream(file);
        ObjectOutputStream oos = new ObjectOutputStream(out);
        oos.writeObject(new Person("张三", 22, "男"));//性别不会被保存  transient 声明的变量不会被序列号


        InputStream in = new FileInputStream(file);
        ObjectInputStream ois = new ObjectInputStream(in);
        Person person = (Person) ois.readObject();
        System.out.println(person.getName());
        System.out.println(person.getAge());
        System.out.println(person);

    }

}

ObjectOutputStreamDemo2

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;


public class ObjectOutputStreamDemo2 {

   /**
    * @param args
    * @throws IOException 
    * @throws ClassNotFoundException 
    */
   public static void main(String[] args) throws IOException, ClassNotFoundException {
      // TODO Auto-generated method stub
      
      File file = new File("D:"+File.separator+"javademo.txt");
      
      
      OutputStream out = new FileOutputStream(file);
      ObjectOutputStream oos = new ObjectOutputStream(out );
      oos.writeObject(new Pet("小白",3,"公"));//性别不会被保存  没有配置writeExternal / readExternal
      
      
      InputStream in = new FileInputStream(file);
      ObjectInputStream ois = new ObjectInputStream(in);
      Pet pet = (Pet) ois.readObject();
      System.out.println(pet.getName());
      System.out.println(pet.getAge());
      System.out.println(pet);

   }

}


集速网 copyRight © 2015-2025 宁ICP备15000399号-1 宁公网安备 64010402001209号
与其临渊羡鱼,不如退而结网
欢迎转载、分享、引用、推荐、收藏。