美文网首页
transient与序列化有关

transient与序列化有关

作者: VanessaC | 来源:发表于2017-08-22 11:20 被阅读0次

我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,Java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个的所有属性和方法都会自动序列化。

然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,诚然,你可以让这个类来实现Externalizable接口,这个接口是Serilizable的子接口,但是你必须实现readExternal和writeExternal方法,你可以在这两个方法中实现具体属性的反序列化和序列化操作。然而这就意味着你必须在这两个方法中手工编写额外的代码来进行具体属性的序列化。java的transient关键字为我们提供了便利,你只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。

public class TestTransient {

/**

* @param args

* @throws IOException

* @throws FileNotFoundException

* @throws ClassNotFoundException

*/

public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {

A a = new A(25,"张三");

System.out.println(a);

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("c://mm.txt"));

oos.writeObject(a);

oos.close();

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("c://mm.txt"));

a = (A)ois.readObject();

System.out.println(a);

}

}

class A implements Serializable{

int a;

transient String b;

public A(int a,String b){

this.a = a;

this.b = b;

}

public String toString(){

return "a = "+a+",b = "+b;

}

}

运行结果如下:

a = 25,b = 张三

a = 25,b = null

在上面的例子中,我将属性b前添加关键字transient,我们看到虽然我们序列化的对象a的属性值为“张三”,但是当我们反序列化之后发现这个属性为空,说明这个属性没有进行序列化。

相关文章

  • Java(二)Java基础--04熟悉Java中各种关键词

    一、transient 1、序列化和非序列化 序列化和非序列化 2、transient transient 二、i...

  • transient与序列化有关

    我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,Java的这种序列化模式为开发者提...

  • 面试官:说说Java中的transient关键字

    前言 之前写过一篇序列化相关的文章,今天要讲的这个文件自transient也是跟序列化有关系的。但是,挺多人没有了...

  • JAVA-transient 关键字

    为什么要有transient关键字 在Java中,transient修饰的变量不会被序列化,即这些变量并不是序列化...

  • Java 的序列化和反序列化机制

    1. 文章结构 序列化 ID 的问题 静态变量序列化 父类的序列化与 Transient 关键字 对敏感字段加密 ...

  • Java中各种关键字

    java transient 关键字与序列化Java关键字——instanceofvolatile关键字浅析Jav...

  • Java transient关键字小记

    transient义为短暂的。在Java中,transient和对象的序列化(持久化)息息相关。 在Java中,要...

  • Java transient 关键字

    问:transient 关键字能实现什么? 答:当对象被序列化时(写入字节序列到目标文件)时,transient ...

  • 关键字——Transient

    transient 的用途 Q:transient 关键字能实现什么? A:当对象被序列化时(写入字节序列到目标文...

  • transient

    取消序列化 transient修饰变量,在进行序列化操作时,会忽略。 被static不能被序列化 读取反序列化的对...

网友评论

      本文标题:transient与序列化有关

      本文链接:https://www.haomeiwen.com/subject/qcokdxtx.html