Sobes.tech
Junior — Middle

Hogyan valósítható meg a Singleton objektum serializált formátumba való átalakítása és visszaalakítása?

sobes.tech MI

Válasz az MI-től

Az Android (vagy Java) környezetben a Singleton objektum serializálásához és deserializálásához biztosítani kell, hogy deserializáláskor ne hozzon létre új példányt, hanem a meglévő Singleton példányt adja vissza.

Fő lépések:

  1. A Singleton osztálynak implementálnia kell a Serializable interfészt.
  2. Az osztályban meg kell határozni a readResolve() metódust, amely deserializáláskor visszaadja a meglévő Singleton példányt.

Példa:

public class MySingleton implements Serializable {
    private static final long serialVersionUID = 1L;

    private static final MySingleton INSTANCE = new MySingleton();

    private MySingleton() {
        // privát konstruktor
    }

    public static MySingleton getInstance() {
        return INSTANCE;
    }

    // Metódus, amely garantálja, hogy deserializáláskor ugyanaz a példány kerül visszaadásra
    private Object readResolve() throws ObjectStreamException {
        return INSTANCE;
    }
}

Így, a serializálás során az objektum elmentésre kerül, és a deserializáláskor a readResolve() visszaadja a már létező példányt, megőrizve a Singleton mintát.