"हॅलो, अमिगो! आज आपण आणखी एका मनोरंजक विषयाबद्दल जाणून घेणार आहोत. विशेषत: वस्तू जतन करणे आणि लोड करणे (पुनर्रचना) करणे . समजा आपल्याकडे एक मांजर वर्ग आहे:"

कोड
class Cat
{
 public String name;
 public int age;
 public int weight;
}

आणि समजा आम्हाला फाइल सेव्ह करण्यासाठी आणि लोड करण्यासाठी एक सोयीस्कर यंत्रणा जोडायची आहे.

आम्ही हे असे करू शकतो:

कोड
class Cat {
    public String name;
    public int age;
    public int weight;

    public void save(PrintWriter writer) throws Exception {
        writer.println(name);
        writer.println(age);
        writer.println(weight);
        writer.flush();
    }

    public void load(BufferedReader reader) throws Exception {
        name = reader.readLine();
        age = Integer.parseInt(reader.readLine());
        weight = Integer.parseInt(reader.readLine());
    }
}

"व्वा! हे खूप सोपे आहे! आम्ही फक्त प्रत्येक युक्तिवादाची मूल्ये लिहितो, प्रत्येक ओळीवर एक. आम्ही फाइल लोड केल्यावर, आम्ही ती त्याच क्रमाने वाचतो. हे एक परिपूर्ण समाधान आहे."

"धन्यवाद, अमिगो. आता तुम्ही वर्गांच्या या गटासाठी सेव्ह आणि लोड पद्धती लिहू शकता:"

कोड
class Cat
{
 public String name;
 public int age;
 public int weight;
}
class Dog
{
 public String name;
 public int age;
}
class Human
{
 public Cat cat;
 public Dog dog;
}

तुमच्याकडे एक मानवी वस्तू आहे, ज्यामध्ये एक कुत्रा आणि एक मांजर असू शकते.

"माझ्याकडे एक उपाय आहे:"

कोड
class Cat {
    public String name;
    public int age;
    public int weight;

    public void save(PrintWriter writer) throws Exception {
        writer.println(name);
        writer.println(age);
        writer.println(weight);
        writer.flush();
    }

    public void load(BufferedReader reader) throws Exception {
        name = reader.readLine();
        age = Integer.parseInt(reader.readLine());
        weight = Integer.parseInt(reader.readLine());
    }
}
कोड
class Dog {
    public String name;
    public int age;

    public void save(PrintWriter writer) throws Exception {
        writer.println(name);
        writer.println(age);
        writer.flush();
    }

    public void load(BufferedReader reader) throws Exception {
        name = reader.readLine();
        age = Integer.parseInt(reader.readLine());
    }
}
कोड
public class Human {
    public Cat cat;
    public Dog dog;

    public void save(PrintWriter writer) throws Exception {
        cat.save(writer);
        dog.save(writer);
    }

    public void load(BufferedReader reader) throws Exception {
        cat.load(reader);
        dog.load(reader);
    }
}

"खूप चांगला उपाय आहे. पण माणसाला कुत्रा पण मांजर नसेल तर काय होईल?"

शून्य धनादेश कोठे आहेत?

"मी आता ते दुरुस्त करेन:"

कोड
public class Human {
    public Cat cat;
    public Dog dog;

    public void save(PrintWriter writer) throws Exception {
        if (cat != null)
            cat.save(writer);
        if (dog != null)
            dog.save(writer);
    }

    public void load(BufferedReader reader) throws Exception {
        cat = new Cat();
        cat.load(reader);
        dog = new Dog();
        dog.load(reader);
    }
}

"ते अजूनही बरोबर नाही. तुमच्या दोन चुका आहेत:"

1) एखाद्या व्यक्तीकडे मांजर किंवा कुत्रा नसू शकतो, परंतु लोड पद्धत कॉल केल्यावर ते तयार केले जातील

२) जर आपण फक्त कुत्रा वाचवला तर त्याचा डेटा मांजर लोड झाल्यावर वाचेल.

"बरं, मी काय करू?"

"आम्ही व्हेरिएबल्स लिहिणे वगळू शकत नाही, अन्यथा आम्हाला वाचताना समस्या येतील . तुम्हाला हे सुनिश्चित करणे आवश्यक आहे की सेव्ह ऑपरेशन दरम्यान शून्य असणारे व्हेरिएबल्स लोड ऑपरेशन दरम्यान शून्य वर सेट केले आहेत. येथे माझी आवृत्ती आहे:"

कोड
public class Human {
    public Cat cat;
    public Dog dog;

    public void save(PrintWriter writer) throws Exception {
        String isCatPresent = cat != null ? "yes" : "no";
        writer.println(isCatPresent);
        writer.flush();

        if (cat != null)
            cat.save(writer);

        String isDogPresent = dog != null ? "yes" : "no";
        writer.println(isDogPresent);
        writer.flush();

        if (dog != null)
            dog.save(writer);
    }

    public void load(BufferedReader reader) throws Exception {

        String isCatPresent = reader.readLine();
        if (isCatPresent.equals("yes")) {
            cat = new Cat();
            cat.load(reader);
        }

        String isDogPresent = reader.readLine();
        if (isDogPresent.equals("yes")) {
            dog = new Dog();
            dog.load(reader);
        }
    }
}

"हो, मला हा उपाय आवडतो."

"हो, छान आहे."