es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo ignorar un campo en el método equals() de Java para un objeto personalizado?

Tengo un objeto Person que tiene 20 campos y se almacena en DynamoDB.
Quiero crear un nuevo objeto Person basado en alguna entrada, verificar si el mismo objeto existe en la base de datos o no. Si existe, quiero comparar los 2 objetos en base a 19 campos de los 20. El campo a ignorar es una bandera de verificación booleana.

Estoy usando Lombok @Data para generar el método equals.

¿Hay alguna manera de hacer esto sin tener que escribir yo mismo un método equals completo y detallado?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes usar la anotación @EqualsAndHashCode de Lombok para generar automáticamente el método equals basado en los campos de tu clase Person.

    Para ignorar el campo de la bandera booleana al comparar, puedes usar el atributo exclude de la anotación @EqualsAndHashCode. Aquí tienes un ejemplo:

    @Data
    @EqualsAndHashCode(exclude = "booleanFlag")
    public class Person {
        private String field1;
        // otros campos
        private boolean booleanFlag;
    }
    
    Person newPerson = new Person(); // crea un nuevo objeto de persona basado en la entrada
    // verifica si la persona ya existe en la base de datos
    if (existingPerson.equals(newPerson)) {
        // dos objetos son iguales en base a 19 de 20 campos
    }
    

    Al excluir el campo booleanFlag en @EqualsAndHashCode, no se considerará al generar el método equals.

Comments are closed.