Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java सीरियलाइज़ेशन में transient और final कैसे काम करते हैं?

Java सीरियलाइज़ेशन में:

  • transient फ़ील्ड्स को सीरियलाइज़ेशन से बाहर रखा जाता है; डीसीरियलाइज़ेशन पर उन्हें डिफ़ॉल्ट मान मिलते हैं (null, 0, false)।
  • final फ़ील्ड्स सीरियलाइज़ होती हैं यदि वे transient नहीं हैं। एक final transient फ़ील्ड सीरियलाइज़ नहीं होगी और डिफ़ॉल्ट मान प्राप्त करेगी।

उदाहरण

import java.io.*;

class Student implements Serializable {
    private String name;
    private transient int age; // सीरियलाइज़ नहीं होगा
    private final String id = "STU-100"; // सीरियलाइज़ होगा (transient नहीं)
    private final transient String temp = "temp"; // सीरियलाइज़ नहीं होगा

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public void display() {
        System.out.println("Name: " + name + ", Age: " + age + ", ID: " + id + ", Temp: " + temp);
    }
}

public class SerializeExample {
    public static void main(String args[]) throws Exception {
        Student std = new Student("Sarmista", 27);
        System.out.println("Before serialization:");
        std.display();

        // सीरियलाइज़ेशन
        FileOutputStream fos = new FileOutputStream("student.ser");
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(std);
        oos.close(); fos.close();

        // डीसीरियलाइज़ेशन
        FileInputStream fis = new FileInputStream("student.ser");
        ObjectInputStream ois = new ObjectInputStream(fis);
        Student deSerializedStd = (Student) ois.readObject();
        ois.close(); fis.close();

        System.out.println("After deserialization:");
        deSerializedStd.display();
    }
}

आउटपुट

Before serialization:
Name: Sarmista, Age: 27, ID: STU-100, Temp: temp
After deserialization:
Name: Sarmista, Age: 0, ID: STU-100, Temp: null

मुख्य बिंदु

  • age (transient) → 0 (int डिफ़ॉल्ट)
  • id (final, non-transient) → मान संरक्षित
  • temp (final + transient) → null (ऑब्जेक्ट डिफ़ॉल्ट)
  1. - Java में StringBuilder की तुलना StringBuffer से कैसे करें?

    StringBuffer ऑब्जेक्ट आमतौर पर मल्टी-थ्रेडेड वातावरण में उपयोग करने के लिए सुरक्षित होते हैं जहां कई थ्रेड एक ही समय में एक ही StringBuffer ऑब्जेक्ट को एक्सेस करने का प्रयास कर सकते हैं। StringBuilder, थ्रेड-सेफ StringBuffer क्लास का एक प्रतिस्थापन है और यह बहुत तेजी से काम करता है क्योंकि इसमें कोई

  1. - Java में म्यूटेबल ऑब्जेक्ट रेफरेंस के साथ इम्यूटेबल क्लास कैसे बनाएं?

    इम्यूटेबल ऑब्जेक्ट्स वे ऑब्जेक्ट्स हैं जिनकी स्थिति इनिशियलाइज़ेशन के बाद बदली नहीं जा सकती। कभी-कभी आवश्यकता के अनुसार इम्यूटेबल क्लास बनाना आवश्यक होता है। उदाहरण के लिए, सभी प्रिमिटिव रैपर क्लासेस (Integer, Byte, Long, Float, Double, Character, Boolean और Short) जावा में इम्यूटेबल हैं। String क्

  1. - Jackson और Gson का उपयोग करके Java POJO को JSON में आसानी से बदलें

    इस ट्यूटोरियल में हम दिखाते हैं कि दो लाइब्रेरी, Jackson और Gson का उपयोग करके Java ऑब्जेक्ट को JSON में कैसे बदलें। हम एक Person क्लास का उपयोग करेंगे जो सिर्फ एक स्टैंडर्ड POJO है। एक बार Person ऑब्जेक्ट बनाने के बाद, हम इसे विभिन्न लाइब्रेरी का उपयोग करके JSON में बदल सकते हैं। Person.java import