Sobes.tech
Junior — Middle

Singleton объектин сериалдаштырылган форматка жана кайра кайтаруу процесси кандай ишке ашырылат?

sobes.tech AI

AIден жооп

Android (жеки Java) ичинде Singleton объектисин сериалдаштыруу жана десериалдаштыруу учурунда, десериалдаштыруу учурунда жаңы нускаманы түзбөстөн, бар болгон Singleton нускамасын кайтаруу керек.

Негизги кадамдар:

  1. Singleton классы Serializable интерфейсин ишке ашырышы керек.
  2. Класста, десериалдаштыруу учурунда бар болгон Singleton нускамасын кайтарган readResolve() методу аныкталышы керек.

Мисал:

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 паттернин сактап калат.