带有 Lombok @Builder 的方法生成器

本文探讨了如何利用 Lombok 的 @Builder 注解来生成方法构建器,以解决方法多参数、默认值和类型化方法的问题。通过示例展示了如何设置默认值、覆盖生成器方法以及在传递类型时进行转换,从而提高代码的可读性和调用者的便利性。
摘要由CSDN通过智能技术生成

在本教程中,我们将探索使用 Lombok 的 @Builder 注解生成方法构建器的各种可能性,以提高可用性。

概述

在本教程中,我们将探索使用 Lombok 的@Builder注解生成方法构建器的可能性。目的是通过提供一种调用给定方法的灵活方式来提高可用性,即使它有很多参数。

@Builder 关于简单方法

如何为方法提供灵活的使用是一个可能需要多个输入的一般主题。看看下面的例子:

如果未标记为非空的参数是可选的,则该方法可能接受以下所有调用: 

 

这个例子已经显示了一些问题点,例如:

  • 调用者应该知道哪个参数是哪个(例如,为了改变第一个调用也提供一个Long,调用者必须知道Long预期是第五个参数)。
  • 输入必须按给定的顺序设置。
  • 输入参数的名称不透明。

同时,从提供者的角度来看,提供参数较少的方法将意味着方法名称的大量重载,例如:

 为了获得更好的可用性并避免样板代码,可以引入方法构建器。Project Lombok 已经提供了一个注解,以简化构建器的使用。上面的示例方法可以用以下方式注释: 

这样,方法调用以后更容易理解和更改。一些备注:

  • 默认情况下,静态方法上的构建器方法(获取构建器实例的方法)本身就是静态方法。
  • 默认情况下,该call()方法将具有与原始方法相同的 throw 签名。

默认值

在许多情况下,为输入参数定义默认值真的很有帮助。与其他一些语言不同,Java 没有语言元素来支持这种需求。因此,在大多数情况下,这是通过方法重载实现的,其结构如下: 

 

 

在使用 Lombok 构建器时,将在目标类中生成一个构建器类。这个构建器类:

  • 具有与方法相同数量的属性和参数。
  • 有参数设置器。

也可以手动定义类,从而可以定义参数的默认值。这样,上面的方法将如下所示:

 

有了这个添加,如果调用者没有指定参数,则将使用构建器类中定义的默认值。

注意:在这种情况下,我们不必在类中声明方法的所有输入参数。如果类中不存在该方法的输入参数,Lombok 将相应地生成一个附加属性。

类型化方法

通常需要通过其中一个输入来定义给定方法的返回类型,例如: 

在这种情况下,builder 类也将是一个类型化的类,但 builder 方法将创建一个没有限定类型的实例。看看下面的例子:

 

在这种情况下,该methodBuilder方法将创建一个MethodBuilder没有限制类型参数的实例。这导致以下代码将无法编译(如 所要求的Class<T>,由 提供Class<String>):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值