public static void main(String[] args) throws Exception {
User user = new User("Tom", "123456");
System.out.println("用户名:" + user.getName() + ", 密码:" + user.getPassword());
// 序列化对象
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("user.obj"));
out.writeObject(user);
out.close();
// 反序列化对象
ObjectInputStream in = new ObjectInputStream(new FileInputStream("user.obj"));
User newUser = (User) in.readObject();
in.close();
System.out.println("用户名:" + newUser.getName() + ", 密码:" + newUser.getPassword());
}
}
执行以上程序,可以看到以上的示例程序,可以看出在User类中,由于密码被声明为transient字段,因此在序列化后,该字段不会被写入到文件中,反序列化时,密码字段被赋值为null。因此,在打印 new User 对象时,密码字段的值被输出为null。这说明了transient字段在对象序列化和反序列化时的作用。
除此之外,在实际应用中,我们可以根据需要,灵活使用transient关键字,以确保序列化对象的安全性和性能。尤其对于包含敏感数据的对象,使用transient可以避免敏感数据被序列化到磁盘中,从而保障数据的保密性。
由此可见,transient关键字在Java编程中扮演着重要的角色,使用transient关键字可以有效地进行对象序列化和反序列化,优化程序性能,增加数据安全性。