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:
- A classe Singleton deve implementar a interface
Serializable. - 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.