What is transient keyword in Java?

This article explains about the transient variable and when it will be used in the Java programming. Another important fact is that, this question is most frequently asked in the Java interviews for checking the basic knowledge of a programmer. Another point is that this keyword is not frequently used by programmer in the normal world, unless the real need for that. That makes practical knowledge on this keyword is minimal for most of the programmers. This article explores with very simple explanations and example to make you understand when and why transient variable will be used in Java.   If you are Java programmer and want to receive the weekly updates on Java tips to improve your knowledge, please subscribe to our free newsletter here.

also read:

What is Serialization?

If you want to understand what is transient, please learn about what is Serilization concept in Java if you are not familiar with that. Serialization is the process of making the object’s state is persistent. That means the state of the object is converted into stream of bytes and stored in a file. In the same way we can use the de-serilization concept to bring back the object’s state from bytes. This is one of the important concept in Java programming because this serialization is mostly used in the networking programming. The object’s which are needs to be transmitted through network has to be converted as bytes, for that purpose every class or interface must implement  serialization interface. It is a marker interface without any methods.

What is Transient?

The keyword transient in Java used to indicate that the variable should not be serialized. By default all the variables in the object is converted to persistent state. In some cases, you may want to avoid persisting some variables because you don’t have the necessity to transfer across the network. So, you can declare those variables as transient. If the variable is declared as transient, then it will not be persisted. It is the main purpose of the transient keyword.

Transient Keyword Example

Look into the following example to understand the purpose of transient keyword:

package javabeat.samples;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

class NameStore implements Serializable{
	private String firstName;
	private transient String middleName;
	private String lastName;
	public NameStore (String fName,
                         String mName,
                         String lName){
		this.firstName = fName;
		this.middleName = mName;
		this.lastName = lName;
	}
	public String toString(){
		StringBuffer sb = new StringBuffer(40);
		sb.append("First Name : ");
		sb.append(this.firstName);
		sb.append("Middle Name : ");
		sb.append(this.middleName);
		sb.append("Last Name : ");
		sb.append(this.lastName);
		return sb.toString();
	}
}
public class TransientExample{
	public static void main(String args[]) throws Exception {
		NameStore nameStore = new NameStore("Steve",
                                     "Middle","Jobs");
		ObjectOutputStream o = new ObjectOutputStream
                   (new FileOutputStream("nameStore"));
		// writing to object
		o.writeObject(nameStore);
		o.close();

		// reading from object
		ObjectInputStream in =new ObjectInputStream(
                new FileInputStream("nameStore"));
		NameStore nameStore1 = (NameStore)in.readObject();
		System.out.println(nameStore1);
	}
}
// output will be :
First Name : Steve
Middle Name : null
Last Name : Jobs

In the above example, the variable middle Name is declared as transient, so it will not be stored in the persistent storage. You can run the above example and check the results.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Pin It on Pinterest

Share This

Share this post with your friends!

Share This

Share this post with your friends!