Sobes.tech
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().