您当前的位置:首页 > 计算机 > 编程开发 > Java

Java transient关键字的作用和用法

时间:10-16来源:作者:点击数:

Java 的 serialization 提供了一种持久化对象实例的机制。当持久化一个对象时,可能并不想持久化所有的属性。对于这种情况,可以通过在属性前加上关键字transient 来实现。

例如以下代码是 SuperClass 和 Sub 两个类的定义。在序列化一个 Sub 的对象 Sub 到文件时,只有 radius 会被保存到文件中。Java 代码如下:

class SuperClass {

    public String name;
}

class Sub extends SuperClass implements Serializable {

    private float radius;
    transient int color;
    public static String type = "Sub";
}

在分布式环境下,当进行远程通信时,无论是何种类型的数据,都会以二进制序列的形式在网络上传送。

序列化是一种将对象转换成字节序列的过程,用于解决在对对象流进行读写操作时所引发的问题。

序列化可以将对象的状态写在流里进行网络传输,或者保存到文件、数据库等系统里,并在需要的时候把该流读取出来重新构造成一个相同的对象。

如何实现序列化呢?其实,所有要实现序列化的类都必须实现Serializable接口,Serializable 接口位于 java.lang 包中,它里面没有包含任何方法。使用一个输出流(例如 FileOutputStream)来构造一个 ObjectOutputStream(对象流)对象,紧接着,使用该对象的 writeObject(Object obj)方法就可以将 obj 对象写出(即保存其状态),要恢复的时候可以使用其对应的输入流。

序列化有如下几个特点:

  • 如果一个类能被序列化,那么它的子类也能够被序列化。
  • 由于 static(静态)代表类的成员,transient(Java 语言关键字,如果用 transient 声明一个实例变量,那么当对象存储时,它的值不需要维持)代表对象的临时数据,因此,被声明为这两种类型的数据成员是不能够被序列化的。
  • 子类实现了 Serializable 接口,父类没有,父类中的属性不能序列化,但是子类中的属性仍能正确序列化。
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门