Junior — Middle
Objetos que passaram por serialização e subsequente desserialização manterão a igualdade pelo método equals()?
sobes.tech IA
Resposta da IA
Os objetos que passaram por serialização e posterior desserialização não garantem manter a igualdade pelo método equals(), a menos que esse método tenha sido sobrescrito especificamente para comparar o conteúdo dos objetos. Por padrão, o método equals() em Java (e Android) compara referências de objetos, e após a desserialização, um novo objeto é criado com um endereço de memória diferente.
Se a classe sobrescrever corretamente equals() e comparar os campos internos, então os objetos antes e depois da serialização podem ser considerados iguais. Caso contrário, não.
Exemplo:
class Person implements Serializable {
String name;
int age;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age && Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
Neste caso, após a desserialização, objetos com os mesmos valores de campos serão considerados iguais pelo método equals().