JAVA—基础之“Transient”关键字

OK,先别急,在了解 Transient 之前我们先要了解一下什么是序列化,这是个前提。

什么是序列化:

Java 中的对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了该对象的数据与信息,这样方面我们将该对象写入数据库或文件中等等,也可以在网络间进行传输。
我们最经常使用的就是让我们的实体类实现 Serializable 接口,其目的就是为了让其可以序列化。既然可以序列化,当然也可以别反序列化,将其恢复成原先的 Java 对象。
了解完序列化之后,咱们就可以来看 Transient 关键字了



Transient关键字:

Transient 的意义就是阻止序列化(不进行序列化)。
Transient 只能修饰自定义的成员变量,不能修饰本地变量、修饰类、方法等等。一旦被 Transient 所修饰的成员变量是不会被序列化,因为该成员变量已经不再是持久化的一部分了,所以该成员变量在序列化后无法获得。
注意:在使用 Transient 时,需要让该类实现 Serializable 接口



怎么使用 Transient:

我们举个例子,小明的信息有:姓名、年龄、地址。这些信息在网络上传输的时候地址就属于个人敏感信息,我们希望安全,保密。我们就不需要序列化地址。(单纯举例而已)

import java.io.Serializable;

public class MrMing implements Serializable {       // 实现 Serializable 接口

    private String name;
    private Integer age;
    private transient String address;       // 使用 transient 关键字修饰成员变量
    
    ...                                 // 省略 get set 方法
}
import java.io.*;

public class TransientDemo {
    public static void main(String[] args) {
        try {
            // 创建一个小明,并设置相应属性
            MrMing mrMing = new MrMing();
            mrMing.setName("小明");
            mrMing.setAge(18);
            mrMing.setAddress("赛博坦星球");

            // 先打印一边对象信息
            System.out.println("序列化前:" + mrMing.toString());

            // 使用流进行序列化
            ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("mrMing"));
            outputStream.writeObject(mrMing);
            outputStream.close();

            System.out.println();

            // 从流中读取对象
            ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream("mrMing"));
            mrMing = (MrMing) inputStream.readObject();
            System.out.println("从流中取出序列化过后的对象:" + mrMing.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

最终结果:
在这里插入图片描述



为什么使用 Transient:

如上面例子所说,在一些包含敏感信息、安全信息在网络上传递的时候,为了安全就不出现这些属性。或者一些没有价值的属性,也没有必要进行序列化,多多少少也会占点空间吧。具体还要根据情景来看是否需要使用。


~~OK,以上就是对 Transient相关的知识了,如有不对请指出,多多海涵。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章