কম্পিউটার

জাভা সিরিয়ালাইজেশনে চূড়ান্তের সাথে কীভাবে ক্ষণস্থায়ী কাজ করে?


জাভাতে, সিরিয়ালাইজেশন হল একটি ধারণা যা ব্যবহার করে আমরা একটি বস্তুর অবস্থাকে একটি বাইট স্ট্রীমে লিখতে পারি যাতে আমরা এটিকে নেটওয়ার্কে স্থানান্তর করতে পারি (জেপিএ এবং আরএমআই-এর মতো প্রযুক্তি ব্যবহার করে)।

ক্ষণস্থায়ী ভেরিয়েবল − ক্ষণস্থায়ী ভেরিয়েবলের মানগুলি কখনই বিবেচনা করা হয় না (এগুলিকে সিরিয়ালাইজেশন প্রক্রিয়া থেকে বাদ দেওয়া হয়)। অর্থাৎ যখন আমরা একটি পরিবর্তনশীল ক্ষণস্থায়ী ঘোষণা করি, ডি-সিরিয়ালাইজেশনের পরে এর মান সর্বদা নাল, মিথ্যা, বা, শূন্য (ডিফল্ট মান) হবে।

অতএব, একটি ক্লাসের একটি অবজেক্টকে সিরিয়াল করার সময়, আপনি যদি JVM একটি নির্দিষ্ট ইনস্ট্যান্স ভেরিয়েবলকে অবহেলা করতে চান তবে আপনি এটিকে ক্ষণস্থায়ী ঘোষণা করতে পারেন৷

public transient int limit = 55; // will not persist
public int b; // will persist

উদাহরণ

নিম্নলিখিত জাভা প্রোগ্রামে, ক্লাস স্টুডেন্টের দুটি ইনস্ট্যান্স ভেরিয়েবলের নাম এবং বয়স রয়েছে যেখানে বয়সকে ক্ষণস্থায়ী ঘোষণা করা হয়েছে। SerializeExample নামে আরেকটি ক্লাসে আমরা স্টুডেন্ট অবজেক্টকে সিরিয়ালাইজ এবং নির্বীজন করার চেষ্টা করছি এবং এর ইনস্ট্যান্স ভেরিয়েবলগুলি প্রদর্শন করছি। যেহেতু বয়সকে অদৃশ্য (ক্ষণস্থায়ী) করা হয়েছে শুধুমাত্র নামের মানটি প্রদর্শিত হয়।

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class Student implements Serializable {
   private String name;
   private transient int age;
   public Student(String name, int age) {
      this.name = name;
      this.age = age;
   }
   public void display() {
      System.out.println("Name: "+this.name);
      System.out.println("Age: "+this.age);
   }
}
public class SerializeExample {
   public static void main(String args[]) throws Exception {
      //Creating a Student object
      Student std = new Student("Sarmista", 27);
      //Serializing the object
      FileOutputStream fos = new FileOutputStream("e:\\student.ser");
      ObjectOutputStream oos = new ObjectOutputStream(fos);
      oos.writeObject(std);
      oos.close();
      fos.close();
      System.out.println("Values before de-serialization: ");
      std.display();
      System.out.println("Object serialized.......");
      //De-serializing the object
      FileInputStream fis = new FileInputStream("e:\\student.ser");
      ObjectInputStream ois = new ObjectInputStream(fis);
      Student deSerializedStd = (Student) ois.readObject();
      System.out.println("Object de-serialized.......");
      ois.close();
      fis.close();
      System.out.println("Values after de-serialization");
      deSerializedStd.display();
   }
}

আউটপুট

Values before de-serialization:
Name: Sarmista
Age: 27
Object serialized.......
Object de-serialized.......
Values after de-serialization
Name: Sarmista
Age: 0

  1. জাভাতে একটি স্ট্রিংকে একটি ইনপুটস্ট্রিম অবজেক্টে কীভাবে রূপান্তর করবেন?

  2. কীভাবে আমরা জাভাতে স্ট্রিংবাফারের সাথে একটি স্ট্রিংবিল্ডার তুলনা করতে পারি?

  3. জাভাতে পরিবর্তনযোগ্য অবজেক্ট রেফারেন্স সহ একটি অপরিবর্তনীয় শ্রেণী কীভাবে তৈরি করবেন?

  4. কীভাবে জাভা অবজেক্টকে JSON এ রূপান্তর করবেন