Sobes.tech
Junior — Middle

როგორ შეიძლება განახორციელოს Singleton ობიექტის გადაქცევა სერიალიზებულ ფორმატში და обратно?

sobes.tech AI

პასუხი AI-სგან

Android (ან Java) გარემოში Singleton ობიექტის სერილიზაცია და დესერილიზაცია უნდა უზრუნველყოს, რომ დესერილიზაციის დროს ახალი ეგზემპლარი არ შეიქმნას, არამედ არსებული Singleton ეგზემპლარი დაბრუნდეს.

ძირითადი ნაბიჯები:

  1. Singleton კლასი უნდა იმუშაოს Serializable ინტერფეისთან.
  2. კლასი უნდა განსაზღვროს მეთოდი 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 ნიმუშს.