Saltar al contenido

Constructor de Lombok para verificar no null y no vacío

Presta atención ya que en este escrito vas a hallar el hallazgo que buscas.Este tutorial ha sido probado por nuestros expertos para asegurar la calidad y veracidad de nuestro post.

Solución:

La respuesta de Maxim Kirilov está incompleta. No comprueba cadenas en blanco/vacías.

Me he enfrentado al mismo problema antes y me di cuenta de que además de usar @NonNull y @Builder de Lombok, sobrecarga el constructor con un modificador de acceso privado, donde puedes realizar las validaciones. Algo como esto:

private Person(final String firstName, final String lastName) 
    if(StringUtils.isBlank(firstName)) 
        throw new IllegalArgumentException("First name can't be blank/empty/null"); 
    
    if(StringUtils.isBlank(lastName)) 
        throw new IllegalArgumentException("Last name can't be blank/empty/null"); 
    
    this.firstName = firstName;
    this.lastName = lastName;

Además, lanzar IllegalArgumentException tiene más sentido (en lugar de NPE) cuando String tiene espacios en blanco, vacíos o null valores.

La anotación del constructor debería resolver su problema:

@Builder
class Person 
    @NonNull
    private String firstName;
    @NonNull
    private String lastName;

El código generado es:

class Person 
    @NonNull
    private String firstName;
    @NonNull
    private String lastName;

    @ConstructorProperties("firstName", "lastName")
    Person(@NonNull String firstName, @NonNull String lastName) 
        if(firstName == null) 
            throw new NullPointerException("firstName");
         else if(lastName == null) 
            throw new NullPointerException("lastName");
         else 
            this.firstName = firstName;
            this.lastName = lastName;
        
    

    public static Person.PersonBuilder builder() 
        return new Person.PersonBuilder();
    

    public static class PersonBuilder 
        private String firstName;
        private String lastName;

        PersonBuilder() 
        

        public Person.PersonBuilder firstName(String firstName) 
            this.firstName = firstName;
            return this;
        

        public Person.PersonBuilder lastName(String lastName) 
            this.lastName = lastName;
            return this;
        

        public Person build() 
            return new Person(this.firstName, this.lastName);
        

        public String toString() 
            return "Person.PersonBuilder(firstName=" + this.firstName + ", lastName=" + this.lastName + ")";
        
    

En este caso el null la validación tendrá lugar durante la construcción del objeto.

Aquí tienes las comentarios y calificaciones

Si tienes alguna sospecha y capacidad de arreglar nuestro enunciado te recomendamos dejar una reseña y con gusto lo ojearemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *