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.