Java序列化与transient关键字

1. 序列化:

Serialization(序列化)是一种将对象以一连串字节描述的过程,一般用于传输和持久化对象。

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

2. 如何序列化:

序列化对象,只需要实现Serializable接口。告诉JVM这个类可以序列化。

3. static、transient后面修饰的字段不会被序列化。

4. 示例:

package com.sheepmu;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
 
public class MyTest implements Serializable
{
     private static final long serialVersionUID = 1L;
     private String name= "SheepMu" ;
     private int age= 24 ;
     public static void main(String[] args)
     { //以下代码实现序列化
         try
         {
             ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream( "my.out" )); //输出流保存的文件名为 my.out ;ObjectOutputStream能把Object输出成Byte流
             MyTest myTest= new MyTest();
             oos.writeObject(myTest);
             oos.flush();  //缓冲流
             oos.close(); //关闭流
         } catch (FileNotFoundException e)
         {       
             e.printStackTrace();
         } catch (IOException e)
         {
             e.printStackTrace();
         }
         fan(); //调用下面的  反序列化  代码
     }
     public static void fan() //反序列的过程
     {   
          ObjectInputStream oin = null ; //局部变量必须要初始化
         try
         {
             oin = new ObjectInputStream( new FileInputStream( "my.out" ));
         } catch (FileNotFoundException e1)
         {       
             e1.printStackTrace();
         } catch (IOException e1)
         {
             e1.printStackTrace();
         }     
         MyTest mts = null ;
         try {
             mts = (MyTest ) oin.readObject(); //由Object对象向下转型为MyTest对象
         } catch (ClassNotFoundException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }    
          System.out.println( "name=" +mts.name);   
          System.out.println( "age=" +mts.age);   
     }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值