সিরিয়ালাইজেশন হল একটি অবজেক্টের স্টেটকে বাইট ストিম-এ রূপান্তর করার প্রক্রিয়া। একটি অবজেক্ট সিরিয়ালাইজেবল বলা হয় যদি এর ক্লাস বা প্যারেন্ট ক্লাস Serializable বা Externalizable ইন্টারফেস ইমপ্লিমেন্ট করে। ডিসিরিয়ালাইজেশন হল সিরিয়ালাইজড অবজেক্টকে আবার একটি অবজেক্টের কপি-এ রূপান্তর করার প্রক্রিয়া।
সিরিয়ালাইজেশনের সময়, যদি আমরা কোনো নির্দিষ্ট ভেরিয়েবলের স্টেট বাইট ストিমে লিখতে না চাই, তবে transient কিওয়ার্ড ব্যবহার করতে পারি। যখন JVM transient কিওয়ার্ড পায়, তবে এটি ভেরিয়েবলের আসল স্টেট উপেক্ষা করে এবং সেই ডেটা টাইপের ডিফল্ট ভ্যালু সংরক্ষণ করে (যেমন int-এর জন্য 0, byte-এর জন্য 0, float-এর জন্য 0.0 ইত্যাদি)। একটি অবজেক্টের সিরিয়ালাইজেশন FileOutputStream এবং ObjectOutputStream ক্লাস দিয়ে করা যায়।
উদাহরণ
import java.io.*; public class SerializationTest implements Serializable { int a = 1, b = 2; transient int c = 3; public static void main(String[] args) throws Exception { SerializationTest obj = new SerializationTest(); // serialization FileOutputStream fos = new FileOutputStream("serialization.txt"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(obj); // de-serialization FileInputStream fis = new FileInputStream("serialization.txt"); ObjectInputStream ois = new ObjectInputStream(fis); SerializationTest test = (SerializationTest)ois.readObject(); System.out.println("a = " + test.a); System.out.println("b = " + test.b); System.out.println("c = " + test.c); } }
আউটপুট
a = 1 b = 2 c = 0