Sobes.tech
Junior — Middle

Como pode o processo de transformar um objeto Singleton em formato serializado e vice-versa ser implementado?

sobes.tech IA

Resposta da IA

Para serializar e deserializar um objeto Singleton em Android (ou Java), é necessário garantir que, durante a deserialização, não seja criado um novo exemplo, mas que seja retornado o exemplo existente do Singleton.

Passos principais:

  1. A classe Singleton deve implementar a interface Serializable.
  2. Na classe, deve-se definir o método readResolve(), que ao deserializar retorna o exemplo existente do Singleton.

Exemplo:

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

    private static final MySingleton INSTANCE = new MySingleton();

    private MySingleton() {
        // construtor privado
    }

    public static MySingleton getInstance() {
        return INSTANCE;
    }

    // Método que garante que ao deserializar, será retornado o mesmo exemplo
    private Object readResolve() throws ObjectStreamException {
        return INSTANCE;
    }
}

Dessa forma, ao serializar, o objeto é salvo, e ao deserializar, readResolve() retorna o exemplo já existente, mantendo o padrão Singleton.