package test;
import java.io.*;
public class TransientStudy20220327 {
public static void main(String[] args) throws IOException {
User user = new User();
user.setName("张三");
user.setPassword("123");
user.setAge(11);
System.out.println(user.toString());//User{name='张三', password='123', age=11}
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("D:/user.txt"));
outputStream.writeObject(user);
outputStream.flush();
outputStream.close();
User.name = "王五";
ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream("D:/user.txt"));
try {
Object o = inputStream.readObject();
inputStream.close();
//由于static修饰的变量不可串行化,不参与序列化,
//所以读取的对象o,进行类加载(类上面已加载这里不需要,已经完成了初始化,类的静态变量已经赋值,此时name已经变成了王五)、
//然后进行对象创建的时候,static修饰的变量已从内存取到的值是王五
System.out.println(o);//User{name='王五', password='null', age=11}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
private static class User implements Serializable {
private static String name;
private transient String password;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", password='" + password + '\'' +
", age=" + age +
'}';
}
}
}
transient关键字
最新推荐文章于 2023-06-26 12:24:03 发布