transient에 의해 수정된 멤버 변수의 경우 클래스의 인스턴스 개체 직렬화 과정에서 무시됩니다. 따라서 임시 변수는 객체의 직렬화 및 역직렬화를 통해 실행되지 않습니다. 수명 주기는 호출자의 메모리에만 존재하며 지속성을 위해 디스크에 기록되지 않습니다.
Java에서 객체의 직렬화는 객체를 바이트 시퀀스로 변환하는 것을 의미합니다. 이러한 바이트 시퀀스에는 객체의 데이터와 정보가 포함되어 있습니다. 직렬화된 객체는 데이터베이스나 파일에 기록될 수도 있습니다. 네트워크 전송. 일반적으로 캐시(메모리 공간이 충분하지 않으면 하드 디스크에 로컬로 저장될 수 있음)를 사용하거나 원격으로 rpc(네트워크 전송)를 호출할 때 엔터티 클래스가 직렬화 가능 인터페이스를 구현하도록 해야 하는 경우가 많습니다. 직렬화 가능합니다. 물론 직렬화 이후의 최종 목표는 직렬화를 해제하여 원래 Java 개체 인스턴스로 복원하는 것입니다. 따라서 직렬화된 바이트 시퀀스를 Java 객체로 복원할 수 있습니다. 이 프로세스가 역직렬화입니다.
객체를 유지할 때 일부 특수 데이터 멤버(예: 사용자 비밀번호, 은행 카드 번호 등)의 경우 직렬화 메커니즘을 사용하여 저장하고 싶지 않습니다. 특정 개체의 멤버 변수에 대한 직렬화를 해제하려면 멤버 변수 앞에 임시 키워드를 추가하면 됩니다.
Transient는 멤버 변수가 객체 직렬화의 일부가 아님을 나타내는 데 사용되는 Java 언어의 키워드입니다. 객체가 직렬화되면 임시 변수의 값은 직렬화 결과에 포함되지 않습니다. 비일시적 변수가 포함됩니다. static으로 수정된 정적 변수는 당연히 직렬화할 수 없습니다.
(1) 임시로 변수를 수정하면 해당 변수는 더 이상 개체 지속성의 일부가 아니며 이후에는 변수 내용에 액세스할 수 없습니다. 직렬화.
(2) 임시 키워드는 변수만 수정할 수 있으며 메서드와 클래스는 수정할 수 없습니다. 지역 변수는 임시 키워드로 수정할 수 없습니다. 변수가 사용자 정의 클래스 변수인 경우 클래스는 직렬화 가능 인터페이스를 구현해야 합니다.
(3) 정적 변수는 Transient에 의해 수정되었는지 여부에 관계없이 직렬화할 수 없습니다(직렬화 해제 후에도 클래스의 정적 변수에 여전히 값이 있는 경우 해당 값은 현재 JVM의 해당 정적 변수 값이 됩니다). 직렬화는 개체 상태를 저장하고 정적 변수는 클래스 상태를 저장하므로 직렬화는 정적 변수를 저장하지 않습니다.
(1) 클래스의 필드 값은 다른 필드에서 파생될 수 있습니다. 예를 들어 직사각형 클래스에는 길이, 너비 및 면적의 세 가지 속성이 있습니다. 영역은 직렬화할 필요가 없습니다.
(2) 일부 보안 정보는 정상적인 상황에서 JVM을 떠날 수 없습니다.
(3) 클래스에서 Logger 인스턴스를 사용하는 경우 Logger 인스턴스를 직렬화할 필요가 없습니다
위 내용은 Transient 키워드를 사용하여 Java에서 직렬화를 제어하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!