Junior — Middle
Πώς μπορεί να υλοποιηθεί η διαδικασία μετατροπής ενός αντικειμένου Singleton σε σειριοποιημένη μορφή και αντίστροφα;
sobes.tech AI
Απάντηση από AI
Για την σειριοποίηση και αποσειριοποίηση ενός αντικειμένου Singleton σε Android (ή Java), πρέπει να διασφαλίσουμε ότι κατά την αποσειριοποίηση δεν δημιουργείται νέο αντίγραφο, αλλά επιστρέφεται το υπάρχον αντίγραφο του Singleton.
Βασικά βήματα:
- Η κλάση Singleton πρέπει να υλοποιεί το interface
Serializable. - Στην κλάση, πρέπει να οριστεί η μέθοδος
readResolve(), η οποία κατά την αποσειριοποίηση επιστρέφει το υπάρχον αντίγραφο του Singleton.
Παράδειγμα:
public class MySingleton implements Serializable {
private static final long serialVersionUID = 1L;
private static final MySingleton INSTANCE = new MySingleton();
private MySingleton() {
// ιδιωτικός κατασκευαστής
}
public static MySingleton getInstance() {
return INSTANCE;
}
// Μέθοδος που διασφαλίζει ότι κατά την αποσειριοποίηση θα επιστραφεί το ίδιο αντίγραφο
private Object readResolve() throws ObjectStreamException {
return INSTANCE;
}
}
Έτσι, κατά τη σειριοποίηση, το αντικείμενο αποθηκεύεται, και κατά την αποσειριοποίηση, η readResolve() επιστρέφει το ήδη υπάρχον αντίγραφο, διατηρώντας το μοτίβο Singleton.