개요
자바에서 클래스가이 클래스의 직렬화 가능 인터페이스 객체 직렬화 할 수 구현할 수 있습니다,이 시퀀스 모드 개발자 편의를 많이 제공합니다, 우리는 클래스가 구현 직렬화 한, 프로세스의 특정 순서에 대해 걱정하지 않아도 인터페이스는,이 클래스의 모든 속성은 자동으로 직렬화된다. 그러나 때때로 우리는 로컬 작업에 네트워크에서 전송 또는 지속성 싶지 않은, 보안상의 이유로, 같은 암호 정보로, 직렬화되지 않은 클래스의 속성 중 일부를 수 있도록해야합니다. 긴 앞에 해당 속성으로
transient
키워드, 당신은 속성의 라이프 사이클은 디스크 지속성에 기록되지 않습니다 만 발신자의 메모리에 존재하는 속성 중 일부는 직렬화되지 않습니다 달성 할 수있다.
과도의 사용
public class TransientTest {
public static void main(String[] args) { User user = new User(); user.setUsername("Github"); user.setPassword("123456"); System.out.println("read before Serializable: "); System.out.println("username: " + user.getUsername()); System.err.println("password: " + user.getPassword()); try { ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("user.txt")); os.writeObject(user); // 将User对象写进文件 os.flush(); os.close(); } catch (IOException e) { e.printStackTrace(); } try { ObjectInputStream is = new ObjectInputStream(new FileInputStream("user.txt")); user = (User) is.readObject(); // 从流中读取User的数据 is.close(); System.out.println("\nread after Serializable: "); System.out.println("username: " + user.getUsername()); System.err.println("password: " + user.getPassword()); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } } public class User implements Serializable { private static final long serialVersionUID = 1234567890L; private String username; private transient String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this