zoukankan      html  css  js  c++  java
  • Java序列化

    一、Java序列化介绍

      1.Java序列化与反序列化

        Serialization(序列化)是一种将对象以一连串的字节描述的过程;

        deserialization(反序列化)是一种将这些字节重建成一个对象的过程。

      2.为什么需要反序列化

        Java中,一切都是对象,在分布式中经常需要将Object从这一端网络或设备传递到另一端。这就需要有一种可以在两端传输数据的协议。

      Java序列化机制就是为了解决这个问题。......

      3.JDK类库中序列化API

        Java.io.ObjectOutPutStream   表示对象输出流

        (writeObject(Object obj))对指定的对象序列化

        Java.io.ObjectInPutStream     表示对象输入流

        (readObject())对输入流进行反序列化

      4.实现序列化的要求

        实现Serializable或Extermalizable接口类的对象才能被序列化,否则抛出异常

    二、Java序列化的实现

      1.实现Serializable的对象序列化

    public class TestSerial implements Serializable {
    
        public String name = "15pb";
    
        public String getName(){
            return name;
        }
    }
    public class Main {
        
        //Create objectStream
        public static void onCreateStream() throws IOException {
            FileOutputStream fos = new FileOutputStream("temp.out");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            TestSerial ts = new TestSerial();
            oos.writeObject(ts);
            oos.flush();
            oos.close();
        }
    
        //reader objectStream
        public static void reader() throws IOException, ClassNotFoundException {
            FileInputStream fis = new FileInputStream("temp.out");
            ObjectInput oin = new ObjectInputStream(fis);
            TestSerial ts = (TestSerial) oin.readObject();
            System.out.println("name= "+ts.getName());
    
        }
    
        public static void main(String[] args) throws IOException, ClassNotFoundException {
        // write your code here
            onCreateStream();
            reader();
    
        }
    
    
    }

     

      2.实现Extermalizable接口对象的序列化

    public class TestExter implements Externalizable {
    
        public String name ;
        public String Student ;
    
        public void setName(String name){
            this.name = name;
        }
        public void setStudent(String student){
            this.Student = student;
        }
    
        public String toString(){
            return "name= "+this.name+" ,Student= "+this.Student;
        }
    
        @Override
        public void writeExternal(ObjectOutput out) throws IOException {
    
            out.writeObject(name);
            out.writeObject(Student);
        }
    
        @Override
        public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
    
            name  = (String) in.readObject();
            Student = (String) in.readObject();
        }
    
    
    }
    public class Main{
    public static void main(String[] args) throws IOException, ClassNotFoundException { // write your code here //write ObjectStream TestExter testExter = new TestExter(); testExter.setName("15pb"); testExter.setStudent("hx"); FileOutputStream out = new FileOutputStream("Exter.out"); ObjectOutputStream obj = new ObjectOutputStream(out); obj.writeObject(testExter); //reader ObjectStream FileInputStream in = new FileInputStream("Exter.out"); ObjectInputStream input = new ObjectInputStream(in); TestExter ts = (TestExter) input.readObject(); System.out.println(ts.toString()); } }

  • 相关阅读:
    【转】FIddler+Proxifer工具对windows PC客户端进行抓包
    Json提取器(Json Extractor)
    Json断言
    015-Zabbix自动发现和自动注册
    014-Zabbix的自动发现
    013-zabbix trapper方式监控
    012-zabbix主动模式
    011-通过安装percona插件监控MySQL
    010-监控windows主机
    009-通过jmx监控tomcat
  • 原文地址:https://www.cnblogs.com/NigelX/p/6758637.html
Copyright © 2011-2022 走看看