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 关键字

转自 :http://www.ibm.com/developerworks/cn/java/j-lo-serial/index.html?ca=drs-#major5 引言 将...

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

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

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

一、序列化和反序列化的概念   把对象转换为字节序列的过程称为对象的序列化。   把字节序列恢复为对象的过程称为对象的反序列化。   对象的序列化主要有两种用途:   1) 把对象的字节序...

java序列化、反序列化;关键字transient、volatile

java序列化与反序列化的作用 序列化定义:把对象转化为字节序列的过程称为对象的序列化。 反序列化定义:把字节序列恢复成对象的过程称为对象的反序列化。 序列化、反序列化实现方式:...

transient 关键字 与序列化

Java transient关键字 1. transient的作用及使用方法  对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们...

transient 序列化的关键字

哎,虽然自己最熟的是Java,但很多Java基础知识都不知道,比如transient关键字以前都没用到过,所以不知道它的作用是什么,今天做笔试题时发现有一题是关于这个的,于是花个时间整理下transi...

Java Serialization/序列化/反序列化 及 transient Java关键字详解

以前只知道序列化和反序列化的意思及怎么去使用,没有更深入的去了解,在学习之中遇到了这个transient关键字,以前并不知道在Java中 还有 transient 关键字,既然遇到了就花点时间把整理一...

java 对象序列化 与 静态变量 及 transient

原文 序列化是将对象状态转换为可保持或传输的格式的过程,它也是RMI用来在不同JVM之间传递对象的机制,或者通过方法的参数或者作为一个方法调用的返回值。但有三个例外序列化不需要读或者写入到流: 序列...

Java——transient and 序列化

序列化序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。 在网络传输过程中,可以是字节或是XML,json等格式。而字节的,XML,json编码格式可以还原完...

[疯狂Java]I/O:其它自定义序列化的方法(transient、writeReplace、readResolve、Externalizable)

1. 一种不是很好的排除序列化——transient关键字:     1) 如果你不想让对象中的某个成员被序列化可以在定义它的时候加上transient关键字进行修饰,例如: class A impl...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java序列化与transient关键字
举报原因:
原因补充:

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