亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
麦盖提县| 滨海县| 漯河市| 满洲里市| 湖北省| 木里| 镇远县| 济宁市| 台东县| 马关县| 佛冈县| 丹阳市| 玉田县| 灌阳县| 新和县| 故城县| 南澳县| 西安市| 高阳县| 宜兴市| 临邑县| 衡山县| 稻城县| 抚宁县| 塔城市| 天祝| 红河县| 普定县| 阿拉尔市| 富蕴县| 梁山县| 巴林右旗| 玉田县| 松潘县| 枣庄市| 靖安县| 陵川县| 资兴市| 班玛县| 石台县| 个旧市|