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

    什么是序列化

    对象转化为字节流

    为什么序列化

    • 永久保存对象,将对象的字节序列保存到本地文件中。
    • 通过序列化对象,在网络中传递对象
    • 序列化对象,在进程间传递对象

    序列化方法1:实现Serializable接口(隐式序列化)

    实现Serializable接口,这种是隐式序列化,会自动序列化所有非static和transient关键字修饰的成员变量。

    public class A implements Serializable{
       private String name;
    	    private int age;
    	    public A(String name,int age){
    	    this .name=name;
    	    this.age=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;
    		}
    		@Override
    		public String toString() {
    			return "A [name=" + name + ", age=" + age + "]";
    		}
    }
    //
    public class SerializableDemo{
    public static void main(String [] args){
    Sytem.out.printlen("原来的对象");
     A a= new A("jiao",20);
     System.out.println("a");
     //创建序列化输出流
     ByteArrayOutputStream buf= new ByteArrayOutputStream();
     ObjectOutputStream out= new ObjectOutputStream(buf);
     //将序列化对象存入缓冲区
     out.writeObject(a);
     
     //将对象从缓冲区取出
     ObjectInputStream in = new ObjectInputStream(new ByteArrayOutputStream(buf.toByteArray()));
     A a1= (A) in.readObject();
     System.out.print("输出反序列化后的对象");
     System.out,println("a1");
    }
    }
    
    

    序列化方式二:实现Externalizable接口。(显式序列化)

    Externalizable接口继承自Serializable, 我们在实现该接口时,必须实现writeExternal()和readExternal()方法,而且只能通过手动进行序列化,并且两个方法是自动调用的,因此,这个序列化过程是可控的,可以自己选择哪些部分序列化

    序列化方式三:实现Serializable接口+添加writeObject()和readObject()方法。(显+隐序列化)

    1、方法必须要被private修饰 (才能被调用)
    2、第一行调用默认的defaultRead/WriteObject();(隐式序列化非static和transient)
    3、调用read/writeObject()将获得的值赋给相应的值 (显式序列化)

  • 相关阅读:
    vim发现交换文件
    Linux vim 一般模式(底线模式) 命令行模式 插入模式 记录2:
    linux的停止命令
    Linux centos7 常用命令 记录1:
    linux操作系统的关机命令
    linux解密shadow_Linux密码文件passwd和shadow分析
    mysql中root用户被忽略?
    Linux笔记01
    重装系统后恢复MySQL服务,Can't create test file C:ProgramDataMySQLMySQL
    重装JDK后,输入java -version报错:could not open " xxxxjvm.cf "
  • 原文地址:https://www.cnblogs.com/jiaorenzhan/p/10623944.html
Copyright © 2011-2022 走看看