使用Lombok的@Builder注解实现构造函数模式。使用@Builder的简单方法如何调用多输入法更加灵活方便?请看下面的例子:voidmethod(@NotNullStringfirstParam,@NotNullStringsecondParam,StringthirdParam,StringfourthParam,LongfifthParam,@NotNullObjectsixthParam){...}如果非空参数是可选的,那么有以下调用方法:method("A","B",null,null,null,newObject());method("A","B","C",null,2L,"D");method("A","B",null,null,3L,this);...这个例子暴露了一些问题,如:调用者必须知道修改哪个参数(比如第一个调用方法改成第二个,调用者必须知道修改第五个参数为Long类型)。输入参数的顺序不能改变。需要传入的参数名是不可见的。从提供者的角度来看,如果想提供一个参数较少的方法,需要大量的重载,如下:voidmethod(@NotNullStringfirstParam,@NotNullStringsecondParam,StringthirdParam,@NotNullObjectsixthParam);voidmethod(@NotNullStringfirstParam,@NotNullStringsecondParam,StringthirdParam,StringfourthParam,@NotNullObjectsixthParam);voidmethod(@NotNullString@NotNParam,StringsecondParam,StringthirdParam,StringfourthParam,LongfifthParam,@NotNullObjectsixthParam);...为了提高可用性和避免代码重复,我们可以使用方法构建器。Lombok项目已经提供了一个注解,可以更轻松地生成构建器。因此,上面的例子可以转化为如下方式:@Builder(builderMethodName="methodBuilder",buildMethodName="call")voidmethod(@NotNullStringfirstParam,@NotNullStringsecondParam,StringthirdParam,StringfourthParam,LongfifthParam,@NotNullObjectsixthParam){...}然后你可以这样调用方法:methodBuilder().firstParam("A").secondParam("B").sixthParam(newObject()).call();methodBuilder().firstParam("A").secondParam("B").thirdParam("C").fifthParam(2L).sixthParam("D").call();methodBuilder().firstParam("A").secondParam("B").fifthParam(3L).sixthParam(this).call();这样,提高了方法的可读性和灵活性。默认情况下,静态方法的构建器方法(获取构建器实例的方法)是静态方法。默认情况下,call()方法将抛出原始方法的异常。默认值在很多情况下,需要为方法的输入参数指定默认值,而Java不像其他一些语言,没有语义来支持这种需求。所以大多数情况下是通过方法重载来实现的,像这样:method(){method("Hello");}method(Stringa){method(a,"builder");}method(Stringa,Stringb){method(a,b,"world!");}method(Stringa,Stringb,Stringc){...acutallogichere...}当使用Lombok构建器时,它会在目标类中生成一个构建器类。此构建器类:具有与方法相同数量的属性和参数。带参数的set方法。类也可以手动定义,这样就可以为参数定义默认值。上面的方法也可以写成:@Builder(builderMethodName="methodBuilder",buildMethodName="call",builderClassName="MethodBuilder")method(Stringa,Stringb,Stringc){...这里的实际逻辑...}privateclassMethodBuilder{privateStringa="Hello";私人字符串b=“建设者”;privateStringc="world!";}有了这个加法,如果调用者没有指定参数,那么构建器类将使用中定义的默认值。注意:在这种情况下,我们不需要在类中声明方法的所有入参,Lombok会自动配置。对于泛型方法,我们有通过输入参数定义返回类型的需求,例如:public
