Java序列化与transient关键字

原创 2016年08月29日 09:03:39

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);   
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java 序列化、反序列化与transient关键字

Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。      将序列化对象写入文件之后,可以从...
  • chy555chy
  • chy555chy
  • 2016年09月09日 17:07
  • 579

Java transient关键字的作用及使用方法

refs: http://www.cnblogs.com/lanxuezaipiao/p/3369962.html 1. transient的作用及使用方法       ...
  • Henry_Wu001
  • Henry_Wu001
  • 2015年11月13日 11:38
  • 1053

transient关键字与序列化

一 介绍 transient关键字不会进行JVM虚拟机的序列化,但也可以自己进行序列化,要用到下面两个函数。这两个函数来自ArrayList源码,可以分析ArrayList源码的序列化和反序列化问...
  • chengqiuming
  • chengqiuming
  • 2017年11月22日 12:05
  • 18

Java序列化 transient关键字

java 的transient关键字
  • LittleSkey
  • LittleSkey
  • 2016年12月01日 17:40
  • 325

java transient关键字作用,使用场景。

transient的作用及使用方法,官方解释为: Variables may be marked transient to indicate that they are not part of t...
  • hushaoxi
  • hushaoxi
  • 2016年08月31日 15:31
  • 3461

java中transient关键字作用

关键字介绍   一个对象只要实现了Serilizable接口,这个对象就可以被序列化,Java的这种序列化模式为开发者提供了很多便利,可以不必关系具体序列化的过程,只要这个类实现了Seriliza...
  • xinghuo0007
  • xinghuo0007
  • 2016年05月11日 09:49
  • 254

Java克隆与序列化:transient关键字的使用

Java克隆与序列化:transient关键字的使用 一、关键代码 public class Login implements Serializable { private static fi...
  • u010823625
  • u010823625
  • 2017年03月02日 16:29
  • 130

java的序列化与反序列化及transient关键字

一、序列化和反序列化的概念   把对象转换为字节序列的过程称为对象的序列化。   把字节序列恢复为对象的过程称为对象的反序列化。   对象的序列化主要有两种用途:   1) 把对象的字节序...
  • u010653908
  • u010653908
  • 2016年03月29日 17:46
  • 465

serializable接口以及关键字 transient

一、Serializable接口Serializable接口的作用是就是可以把对象存到字节流,然后可以恢复。 需要序列化对象的两个原因是: 1、将对象的状态保存在存储媒体中以便可以在以后重新创建出...
  • zzkenyon
  • zzkenyon
  • 2016年09月27日 16:00
  • 109

Java反射机制和对象序列化

参考:http://blog.sina.com.cn/s/blog_6f611c300101f7q4.html 反射机制:      JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这...
  • u010963246
  • u010963246
  • 2015年06月26日 12:08
  • 1536
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java序列化与transient关键字
举报原因:
原因补充:

(最多只允许输入30个字)