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.

Inicializar dos campos a la vez con el generador de Lombok

Estoy intentando poblar dos campos en una clase usando solo un campo en un constructor Lombok.

por ejemplo:

@Builder
public class Foo {
   @NonNull
   private final double bar1;

   @NonNull
   private final double bar2;
}

Quiero que

Foo.builder().bar1(0.0).build();

también establezca el valor de bar2 como el mismo valor que bar1.

Gracias.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Puedes lograr esto agregando un método personalizado dentro de tu clase Foo para establecer bar2 con el mismo valor que bar1.

    Aquí tienes un ejemplo:

    @Builder
    public class Foo {
       @NonNull
       private final double bar1;
    
       @NonNull
       private final double bar2;
    
       public static class FooBuilder {
          public FooBuilder bar1(double bar1) {
             this.bar1 = bar1;
             this.bar2 = bar1; // establece bar2 con el mismo valor que bar1
             return this;
          }
       }
    }
    

    Ahora, cuando llames a Foo.builder().bar1(0.0).build(), tanto bar1 como bar2 estarán establecidos en 0.0.

    Ten en cuenta que necesitas definir la clase FooBuilder como estática para acceder al campo privado bar2 desde dentro del creador de objetos.

Comments are closed.