中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

java transient的作用是什么

小億
117
2023-12-23 23:43:20
欄目: 編程語言

在Java中,transient關鍵字用于修飾類的成員變量,它的作用是指示編譯器將被修飾的變量或屬性在對象序列化時忽略,即不參與對象的持久化操作。

當一個Java對象需要被序列化(即轉換為字節流以便存儲、傳輸等操作)時,所有成員變量都會被自動序列化。然而,有時候某些成員變量不應該被序列化,比如密碼、臨時變量等。這時就可以使用transient關鍵字修飾這些變量,讓它們在序列化過程中被忽略。

舉個例子,假設有一個User類,其中包含了用戶名和密碼兩個成員變量。當對User對象進行序列化時,不希望密碼被序列化到字節流中。此時可以將密碼成員變量聲明為transient,這樣在序列化過程中密碼會被忽略,只有用戶名會被序列化。

public class User implements Serializable {
    private String username;
    private transient String password;
    
    // 省略構造方法、getter和setter等
    
    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

當對一個User對象進行序列化和反序列化時,密碼字段將被忽略。

User user = new User("Alice", "123456");
System.out.println("Before serialization: " + user);
 
// 對User對象進行序列化
try (FileOutputStream fos = new FileOutputStream("user.ser");
     ObjectOutputStream oos = new ObjectOutputStream(fos)) {
    oos.writeObject(user);
}
 
// 對User對象進行反序列化
try (FileInputStream fis = new FileInputStream("user.ser");
     ObjectInputStream ois = new ObjectInputStream(fis)) {
    User deserializedUser = (User) ois.readObject();
    System.out.println("After deserialization: " + deserializedUser);
}

輸出結果為:

Before serialization: User{username='Alice', password='123456'}
After deserialization: User{username='Alice', password='null'}

從輸出結果可以看出,在反序列化后獲得的User對象中,密碼字段的值為null,即被忽略了。

0
岳池县| 江山市| 天全县| 石家庄市| 康乐县| 留坝县| 博兴县| 宁波市| 石柱| 兴安县| 锡林郭勒盟| 贡觉县| 巴东县| 曲松县| 车险| 喀喇沁旗| 祁东县| 饶平县| 巍山| 吴旗县| 榕江县| 黄大仙区| 乡宁县| 盘锦市| 库车县| 桐梓县| 泗水县| 肥东县| 漾濞| 云阳县| 盐津县| 靖安县| 沈阳市| 理塘县| 屯留县| 名山县| 苗栗县| 丽水市| 海南省| 景东| 定襄县|