Sérialisation – readObject writeObject remplace

Ayant écrit le code ci-dessous, je dois maintenant utiliser les méthodes de substitution custom readObject () et writeObject () dans StudentData pour lire et écrire les variables de l’object. Sans utiliser les méthodes defaultWriteObject ou defaultReadObject pour ce faire.

Le problème est que je ne comprends pas complètement ce qu’on me demande de faire. J’ai lu les utilisations de readObject / writeObject dans Serialization mais je ne peux pas le comprendre. Est-ce que quelqu’un peut me diriger dans la bonne direction?

Mon code:

import java.io.*; //importing input-output files class Student implements java.io.Serializable { Ssortingng name; // declaration of variables Ssortingng DOB; int id; Student(Ssortingng naam, int idno, Ssortingng dob) // Initialising variables to user // data { name = naam; id = idno; DOB = dob; } public Ssortingng toSsortingng() { return name + "\t" + id + "\t" + DOB + "\t"; } } 
 import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; class StudentData //main class { public static void main(Ssortingng args[]) throws IOException //exception handling { System.out.println("Enter the numbers of students:"); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(in.readLine()); Student[] students = new Student[n]; //Student[] S=new Student[n]; // array of objects declared and defined for (int i = 0; i < students.length; i++) { System.out.println("Enter the Details of Student no: " + (i + 1)); //reading data form the user System.out.println("Name: "); String naam = in.readLine(); System.out.println("ID no: "); int idno = Integer.parseInt(in.readLine()); System.out.println("DOB: "); String dob = (in.readLine()); students[i] = new Student(naam, idno, dob); File studentFile = new File("StudentData.txt"); try { FileOutputStream fileOutput = new FileOutputStream(studentFile); ObjectOutputStream objectOutput = new ObjectOutputStream(fileOutput); objectOutput.writeObject(students); students = null; FileInputStream fileInput = new FileInputStream(studentFile); ObjectInputStream objectInputStream = new ObjectInputStream(fileInput); students = (Student[]) objectInputStream.readObject(); } catch (ClassNotFoundException e) { e.printStackTrace(); } for (Student student : students) { System.out.println(student); } } } } 

Vous devez le faire comme ceci:

 import java.io.IOException; class Student implements java.io.Serializable { Ssortingng name; Ssortingng DOB; int id; Student(Ssortingng naam, int idno, Ssortingng dob) { name = naam; id = idno; DOB = dob; } private void writeObject(java.io.ObjectOutputStream stream) throws IOException { stream.writeObject(name); stream.writeInt(id); stream.writeObject(DOB); } private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException { name = (Ssortingng) stream.readObject(); id = stream.readInt(); DOB = (Ssortingng) stream.readObject(); } public Ssortingng toSsortingng() { return name + "\t" + id + "\t" + DOB + "\t"; } } 

Le readObject est appelé juste après la création d’une instance de Student (en contournant le constructeur normal).