Java의 과도 : 무엇, 왜, 어떻게 작동합니까?



Transient in Java는 직렬화에 사용되는 키워드입니다. 변수 값을 파일에 저장하고 싶지 않을 때 사용합니다.

Java의 Transient는 멤버 변수가 바이트 스트림에 지속될 때 직렬화되지 않도록 표시하는 데 사용됩니다. 이 키워드는 보안 제약 조건을 충족하는 데 중요한 역할을합니다. . 원래 값을 무시합니다. 변하기 쉬운 해당 변수의 기본값을 저장합니다. .

이 기사에서 다룰 주제는 다음과 같습니다.





시작하자!

Java에서 Transient 키워드는 무엇입니까?

Transient는 기본적으로 직렬화에 사용되는 변수 수정 자입니다. 이제 직렬화 란 무엇입니까? 자바 직렬화 객체의 상태를 바이트 스트림으로 변환하는 데 사용되는 메커니즘입니다. 직렬화시 특정 변수의 값을 파일에 저장하지 않으려면 transient 키워드를 사용하십시오.



통사론 :

초보자를위한 amazon ec2 튜토리얼
개인 과도

또는

임시 개인

데이터 멤버를 임시로 정의하는 경우 직렬화되지 않습니다. 이는 모든 필드가 과도 현상 직렬화되지 않습니다. 이 임시 키워드를 사용하여 임시 변수가 오브젝트의 지속적 상태의 일부가 아니라는 JVM (Java Virtual Machine)을 표시 할 수 있습니다.



Transient in Java에 대해 이해하기위한 매우 기본적인 예제를 작성해 보겠습니다.

class Demo는 Serializable을 구현합니다. {// 일시적인 개인 일시적인 String 인간의 일시적인 int age // 다른 필드를 직렬화 private String name, address Date dob // 나머지 코드}

여기에서 Serializable을 구현하는 Demo라는 클래스를 만들었습니다. Demo 클래스의 나이 데이터 멤버는 일시적인 것으로 선언되며 해당 값은 직렬화되지 않습니다. 하지만 객체를 역 직렬화하면 일시적인 변수에 대한 기본값을 얻게됩니다.

과도 수정자가 사용되는 이유는 무엇입니까?

Java의 Transient는 필드가 직렬화 프로세스의 일부가 아니어야 함을 나타내는 데 사용됩니다.

임시 수정자를 클래스의 멤버 변수에 적용하여 이러한 멤버 변수에 대한 직렬화를 해제 할 수 있습니다. 임시로 표시된 모든 필드는 직렬화되지 않습니다. 이 임시 키워드를 사용하여 자바 가상 머신 일시적인 변수는 객체의 지속적인 상태의 일부가 아닙니다.

이 질문이 머릿속에서 실행될 수 있습니다. Java에서이 Transient를 언제 사용해야합니까?

이에 대한 대답은 다음과 같습니다.

  1. 클래스 인스턴스 내의 다른 필드에서 파생 / 계산되는 필드가있는 경우이 Transient 키워드를 사용할 수 있습니다.
  2. JDK 또는 애플리케이션 코드 내에서 '직렬화 가능'으로 표시되지 않은 필드와 함께 사용하십시오. Serializable 인터페이스를 구현하지 않는 클래스는 직렬화 가능한 클래스 내에서 참조되고 직렬화 될 수 없으며 'java.io.NotSerializableException'예외가 발생하기 때문입니다. 이러한 직렬화 불가능한 참조는 '일시적'으로 표시되어야합니다. 메인 클래스 직렬화.

Transient를 Final 키워드와 함께 사용하는 방법은 무엇입니까?

Java의 Transient는 다음과 함께 사용할 수 있습니다. 최종 키워드 일반적으로 다른 상황에서는 그렇지 않은 상황에서 다르게 작동하기 때문입니다. 자바의 키워드 .

이 예를보십시오.

private String firstName private String lastName // final field 1 public final transient String pass = 'password'// final 필드 2 public final transient Lock lock = Lock.getLock ( 'demo')

이제 직렬화 (쓰기 / 읽기)를 다시 실행하면 다음 출력이 표시됩니다.

스냅 샷에서 aws 시작 인스턴스

케니
강한
암호
없는

이는 일시적으로 '통과'를 표시했지만 여전히 해당 필드가 직렬화 되었기 때문입니다. 유사한 선언의 경우 잠금이 직렬화되지 않았습니다. 그 이유는 최종 필드가 상수 표현식으로 평가 될 때마다임시 키워드의 존재를 무시하고 JVM에 의해 직렬화됩니다.

과도 및 휘발성의 차이

이것은 도중에 묻는 중요한 질문입니다 . Java에서 transient 키워드와 volatile 키워드의 차이점은 무엇입니까?

Java just in time 컴파일러

휘발성 물질 과 Transient는 완전히 다른 두 개의 키워드로 . Transient 키워드는 Java 객체의 직렬화 중에 사용됩니다. 휘발성은 여러 스레드에 의해 수정 된 변수의 가시성과 관련이 있습니다.

이러한 키워드의 유일한 유사점은 덜 사용되거나 일반적이지 않은 키워드이며 공개, 정적 또는 최종 키워드만큼 인기가 없다는 것입니다.

이것으로 Java의 Transient에 대해 배운이 기사의 끝으로 이동합니다. 이 튜토리얼에서 여러분과 공유 한 모든 내용이 명확하기를 바랍니다.

'자바의 과도기'에 대한이 기사가 관련되어 있다면 전 세계에 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사입니다.

우리는 당신의 여정의 모든 단계에서 당신을 돕기 위해 여기에 있습니다.이 자바 인터뷰 질문 외에 우리는 자바 개발자가되기를 원하는 학생과 전문가를 위해 설계된 커리큘럼을 마련했습니다. 이 과정은 Java 프로그래밍을 시작하고 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.

질문이 있으시면 'Transient in Java'의 코멘트 섹션에 모든 질문을 남겨 주시면 기꺼이 답변 해 드리겠습니다.