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相關的知識了,如有不對請指出,多多海涵。

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