zoukankan      html  css  js  c++  java
  • 序例化-Externalizable 接口

    package externalizable.cn;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.OutputStream;
    import java.io.Serializable;
    public class ExternalizableDemo {
        public static void main(String[] args) throws Throwable {
            ser();
            dser();    
        }
        //序例化类
        public static void ser() throws Throwable{
            File f = new File("d:"+File.separator+"e.txt");
            OutputStream out = new FileOutputStream(f);
             ObjectOutputStream otp = new ObjectOutputStream(out);
             //void    writeObject(Object obj)   将指定的对象写入 ObjectOutputStream。
             otp.writeObject(new Person("张三",30));
             otp.close();
        }    
        
        //反序例化类
          public static void dser() throws Throwable{
           File f = new File("d:"+File.separator+"e.txt");
           InputStream ip = new FileInputStream(f);
           //new 一个对象输入流
           ObjectInputStream oji = new ObjectInputStream(ip);
           Object object = oji.readObject();
           oji.close();
           System.out.println(object);
          }
    }  
    package externalizable.cn;
    
    import java.io.Externalizable;
    import java.io.IOException;
    import java.io.ObjectInput;
    import java.io.ObjectOutput;
    
    /*
     * 接口 Externalizable  用户自己指定序例化的内容
     * public interface Externalizable extends Serializable{
     *  public void    readExternal(ObjectInput in);
     *   public void    writeExternal(ObjectOutput out); 
     * }
     */
    public class Person implements Externalizable {
        private String name;
        private int age;
        //无参构造:要实现 Externalizable 接口,必须得有一个无参构造
        public Person(){}
        public Person(String name,int age){
            this.age = age;
            this.name = name;
        }
        public String toString (){
             return "姓名:"+this.name+",年龄:"+this.age;
        }
        //实现两个抽象方法
        public void    readExternal(ObjectInput in) throws IOException{
           try {
            this.name = (String)in.readObject();
            this.age = (int)in.readInt();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        }
        public void    writeExternal(ObjectOutput out) throws IOException{
            out.writeObject(this.name);
            out.writeInt(this.age);
        }
    
    }
  • 相关阅读:
    【题解】NOIP2016换教室
    【题解】平面最近点对(加强版)
    [atcoder002E] Candy Piles [博弈论]
    [AGC002D] Stamp Rally [并查集+整体二分]
    [ACG001E] BBQ hard [dp]
    [BJOI2006][bzoj1001] 狼抓兔子 [最小割]
    [usaco jan 09] 安全路径 travel [最短路径树]
    [usaco jan 09] 气象牛 baric [dp]
    [poj1741] tree [点分治]
    [NOI2009] 植物大战僵尸 [网络流]
  • 原文地址:https://www.cnblogs.com/yuanyuan2017/p/6944946.html
Copyright © 2011-2022 走看看