Sobes.tech
Junior — Middle

Ako možno realizovať proces prevodu objektu Singleton do serializovaného formátu a späť?

sobes.tech AI

Odpoveď od AI

Pre serializácie a deserializácie objektu typu Singleton v Android (alebo Java) je potrebné zabezpečiť, aby pri deserializácii nevznikol nový exemplár, ale aby sa vrátil existujúci Singleton.

Hlavné kroky:

  1. Trieda Singleton musí implementovať rozhranie Serializable.
  2. V triede je potrebné definovať metódu readResolve(), ktorá pri deserializácii vráti existujúci exemplár Singleton.

Príklad:

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

    private static final MySingleton INSTANCE = new MySingleton();

    private MySingleton() {
        // súkromný konštruktor
    }

    public static MySingleton getInstance() {
        return INSTANCE;
    }

    // Metóda, ktorá zabezpečuje, že pri deserializácii bude vrátený ten istý exemplár
    private Object readResolve() throws ObjectStreamException {
        return INSTANCE;
    }
}

Týmto spôsobom sa pri serializácii objekt uloží, a pri deserializácii readResolve() vráti už existujúci exemplár, čím sa zachová vzor Singleton.