In a process of leaning java serialization concept, i was puzzled at one point. In java serialization process, we use 2 keywords to prevent serialization, i.e.., transient and static. If i don’t want to save an instance variable, which keyword should i use, both does exactly the same.
Class A implements Serializable{
private static int x;
private transient int y;
private transient static int x;
}
In the above code all the three instance variables are not saved in a process of serialization. Which keyword is apt and recommended to prevent serialization. Why does two keywords have almost the same functionality. What is the recommended way of declaration to prevent serialization. Correct me if I’m wrong, I’m still learning.
The
statickeyword transforms an instance variable into a static variable. A side-effect is that the field is not serialized anymore… because it’s not a field anymore.A static variable is a variable of the class. An instance variable is a variable of the object, or instance of the class. You can’t blindly go from one to the other.
Read the tutorial page about instance and static variables.
The
transientkeyword is the right keyword to use, of course.