Junior — Middle
როგორ შეიძლება განახორციელოს Singleton ობიექტის გადაქცევა სერიალიზებულ ფორმატში და обратно?
sobes.tech AI
პასუხი AI-სგან
Android (ან Java) გარემოში Singleton ობიექტის სერილიზაცია და დესერილიზაცია უნდა უზრუნველყოს, რომ დესერილიზაციის დროს ახალი ეგზემპლარი არ შეიქმნას, არამედ არსებული Singleton ეგზემპლარი დაბრუნდეს.
ძირითადი ნაბიჯები:
- Singleton კლასი უნდა იმუშაოს
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 ნიმუშს.