Java transient is a modifier keyword that is used to mark a variable whose value is not to be serialized during Serialization. If we do not want to save the value of a specific variable during the serialisation, then we can mark a variable as transient by using the transient keyword. As the name itself, transient indicates that it last for a short time or not permanent. When the JVM encounters the transient variable, it ignores the variable’s original value and saves it by its default data type value.
Start Your Free Software Development Course
Web development, programming languages, Software testing & others
Syntax:
The following is the declaration transient keyword.
transient private <member variable>;</member>
or
private transient <member variable>;</member>
AS above mentioned, we can see that the data member defined as transient will not be serialized because it is marked by transient keyword for not to be serialized. We can define a transient data member in two ways, the same as above in the syntax.
Note that Serialization is a process that converts the state of an object into a byte stream. During serialization, if we do not want to save a variable’s value in the file, we can declare it as transient.
Examples of Transient Keyword in Java
Next, we write the java code to understand the transient keyword more clearly with the following example where we will use a transient keyword to define a member variable of a class and make this class subclass of Serializable to perform the serialization and deserialization, as below.
Example #1
Code:
//package demo; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; class Employee implements Serializable{ private String name; private String eid; private int age; //transient variable not serialized private transient int projid = 104; public Employee( String name, String eid, int age, int projid) { this.age = age; this.name = name; this.eid = eid; this.projid = projid; } @Override public String toString() { return "Employee ( name=" + name + ", eid=" + eid + ", age=" + age + ", projid=" + projid + ')'; } } public class Demo { public static void main(String[] args) { // create Employee class object which is Serializable Employee e1 = new Employee( "John", "e106", 26, 104); System.out.println("Employee object Before Serialization is : " + e1); try { FileOutputStream fw = new FileOutputStream("D:\\data.txt"); ObjectOutputStream ow = new ObjectOutputStream(fw); ow.writeObject(e1); System.out.println("Employee is successfully Serialized "); // code for deserialization FileInputStream fr = new FileInputStream("D:\\data.txt"); ObjectInputStream or = new ObjectInputStream(fr); Employee de1 = (Employee) or.readObject(); System.out.println("Employee object successfully created from Serialized data."); System.out.println("Employee object after deseriazliation is : " + de1); } catch (Exception e) { e.printStackTrace(); } } }
Output:
Code Explanation: As in the above code, the employee class has created, and the project id that is projid data member of the employee class is defined as transient, so the value projid will not be serialized and while writing an employee object to the file will not save the value of a projid in the file. And later in the code, an employee object is read back from that file and deserialize an object; we can see in the output that the printing projid of the employee object is 0, which is the default value for the transient variable projid because it is serialized.
Example #2
Next, we write the java code to understand the transient keyword and show that the transient keyword does not impact the static and final variable as transient.
Code:
//package demo; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; class Employee implements Serializable{ private String name; // Use of transient has no impact on static private static String eid; // Use of transient has no impact on final private final int age; //transient variable not serialized private transient int projid = 104; public Employee( String name, String eid, int age, int projid) { this.age = age; this.name = name; this.eid = eid; this.projid = projid; } @Override public String toString() { return "Employee ( name=" + name + ", eid=" + eid + ", age=" + age + ", projid=" + projid + ')'; } } public class Demo { public static void main(String[] args) { // create Employee class object which is Serializable Employee e1 = new Employee( "John", "e106", 26, 104); System.out.println("Employee object Before Serialization is : " + e1); try { FileOutputStream fw = new FileOutputStream("D:\\data.txt"); ObjectOutputStream ow = new ObjectOutputStream(fw); ow.writeObject(e1); // code for deserialization FileInputStream fr = new FileInputStream("D:\\data.txt"); ObjectInputStream or = new ObjectInputStream(fr); Employee de1 = (Employee) or.readObject(); System.out.println("Employee object after deseriazliation is : " + de1); } catch (Exception e) { e.printStackTrace(); } } }
Output:
Code Explanation: As in the above code, the employee class has created, and the eid data member is declared as static and transient, the age declare as final and transient, and porjid of the employee class is declared as only transient, so only the value of projid will not be serialized and while writing an employee object to the file, but others data member value will be serialized. we can see in the output that after desterilize an object is printing, the projid of the employee object is 0, and all other data members’ values are saved because they are not serialized.
Conclusion
As simple as, the name transient meaning is lasting for a short time or not permanent the same way transient keyword is used in java. The transient is a modifier keyword that is used to mark a variable whose value is not to be serialized during Serialization.
위 내용은 자바 과도의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

드림위버 CS6
시각적 웹 개발 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
