目录
在查看JDK的源码中的ArrayList类中,发现了一个关键字,transient
一、案列分析
编写 User 类
public class User implements Serializable { private String username; private transient String password; public User(String username, String password) { this.username = username; this.password = password; } public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } public String getUsername() { return username; } public String getPassword() { return password; } @Override public String toString() { return "User{" + "username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }
编写 TransientTest 测试类
public class TransientTest { public static void main(String[] args) { try { User user = new User("张三","123456"); System.out.println(user); ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("d://test.txt")); oos.writeObject(user); oos.close(); ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d://test.txt")); User user1 = (User) ois.readObject(); System.out.println(user1); }catch (Exception e){ throw new RuntimeException("exception"); } } }
运行程序,查看控制台的输出:
使用transient 关键字,当 JVM 读取transient 关键字时,它会忽略对象的原始值,而是存储对象的默认值
二、 transient 关键字的作用
transient 关键字可以与类的数据成员一起使用,以避免它们的序列化。
例如,如果程序接受用户的登录用户名和密码。但是不想将原始密码存储在文件中。
使用transient 关键字,当 JVM 读取transient 关键字时,它会忽略对象的原始值,而是存储对象的默认值