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:
- Trieda Singleton musí implementovať rozhranie
Serializable. - 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.