91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
黄陵县| 元江| 宿迁市| 抚远县| 中牟县| 茌平县| 通城县| 东阳市| 屏东市| 白银市| 昌黎县| 益阳市| 漳平市| 略阳县| 仙居县| 蓬安县| 兴和县| 清远市| 永寿县| 城步| 敦化市| 青川县| 托里县| 蒙阴县| 彭州市| 麻江县| 如皋市| 宜阳县| 耒阳市| 罗田县| 安福县| 灌云县| 霸州市| 亚东县| 吉首市| 上犹县| 白城市| 唐河县| 彰化市| 甘洛县| 镶黄旗|