
Lombok专题
文章平均质量分 90
码炫课堂-码哥
一名有10余年经验的互联网老兵,历经从传统软件公司到大型互联网公司的洗礼,早年在中兴通讯等大型通信公司担任项目leader,后随着互联网的崛起,先后在前美团支付等大型互联网公司担任架构师。对互联网架构底层技术有相当的研究和独特的见解,在多个领域有着丰富的实战经验。
展开
-
Lombok 使用教程-@FieldNameConstants | 为你的字段生成一个以字段名称为值的常量
注解生成了一个内部类型,它为你的类中的每个字段包含一个常量;或者是字符串常量(字段标记为,类型为),或者如果你愿意,一个枚举类型,每个字段有一个值–为枚举变体编写。对于各种调度和序列化框架很有用。常量字段(无论是枚举值还是字符串常量)的名字总是和字段一模一样的,包括大写和所有,除非你在文件中设置了选项;在这种情况下,lombok会尝试将名字变成大写字母。生成的内部类型默认叫做Fields,是public。你可以通过来修改,例如。默认的内部类型名称也可以通过配置键修改。生成的字段总是public。原创 2024-08-14 08:53:59 · 946 阅读 · 0 评论 -
Lombok 使用教程-@Helper | 让你可以在方法内部中写方法
这个注解让你把方法放在方法中。你可能不知道,但是你可以在方法中声明类,并且这个类中的方法可以访问任何在声明前定义和设置的(有效的)最终局部变量或参数。不幸的是,要真正调用任何方法,你必须先建立一个这个方法局部类的实例,但这就是@Helper的作用,它可以帮助你解决这个问题!用@Helper来注解一个方法局部类,就好像该帮助类中的所有方法都是你可以直接调用的方法,就像java允许方法存在于方法内部一样。在声明了你的助手类之后,直接调用你的助手类中的方法,用。有了@Helper,这两件事就不再需要了。原创 2024-08-14 08:52:28 · 941 阅读 · 0 评论 -
Lombok 使用教程-@UtilityClass | 针对实用工具类的注解
一个实用工具类是一个只是函数命名空间的类。它的实例不可能存在,而且它的所有成员都是静态的。例如,和是著名的实用工具类。这个注解会自动将被注解的类变成一个这样的类。一个实用工具类不能被实例化。通过用标记你的类,lombok会自动生成一个抛出异常的私有构造函数,将你添加的任何显式构造函数标记为错误,并将该类标记为final。如果该类是一个内部类,该类也被标记为static。实用工具类的所有成员都被自动标记为静态。甚至是字段和内部类。原创 2024-08-14 08:51:01 · 851 阅读 · 0 评论 -
Lombok 使用教程-onX | 为Lombok注解添加自定义注解
这个功能被认为是 “变通状态”–它的存在是为了让那些没有这个功能就无法工作的lombok用户无论如何都能使用这个功能。如果我们找到一个更好的方法来实现这个功能,或者未来的某个java版本引入了一个替代策略,这个功能可以在没有一个合理的废弃期的情况下消失。另外,这个功能可能在未来的javac版本中无法使用。使用时请自行斟酌。大多数使lombok生成方法或构造函数的注解可以被配置为使lombok在生成的代码中的元素上添加自定义注解。@Getter@Setter和@Wither支持onMethod。原创 2024-08-14 08:49:41 · 1115 阅读 · 0 评论 -
Lombok 使用教程-@Delegate | 将其他类方法注入到当前类
任何字段或无参数方法都可以用@Delegate来注解,让lombok生成转发对这个字段的调用(或调用这个方法的结果)的委托方法。Lombok委托该字段类型(或方法的返回类型)的所有公共方法,以及其父类型的方法,但所有以声明的方法除外。你可以在@Delegate注解的类型参数中传递任意数量的类。如果你这样做,那么lombok将委托这些类型(以及它们的父类型,除了)中的所有公共方法,而不是看字段/方法的类型。所有属于计算类型的公共非Object方法都被复制,无论你是否也为这些方法写了实现。原创 2024-08-13 08:38:03 · 753 阅读 · 0 评论 -
Lombok 使用教程-@FieldDefaults | 通过Lombok设置字段默认值
注解可以为被注解的类或枚举中的每个字段添加访问修饰符(publicprivate, 或protected它还可以为注释的类或枚举中的每个字段添加final。要给每个(实例)字段添加final,使用。任何必须保持非final的字段可以用@NonFinal(也在包中)来注释。要给每个(实例)字段添加一个访问修饰符,请使用。任何还没有访问修饰符的字段(即任何看起来像包私有访问的字段)都被改变为具有适当的访问修饰符。任何必须保持包私有的字段都可以用来注释(也在包中)。原创 2024-08-13 08:36:36 · 1289 阅读 · 0 评论 -
Lombok 使用教程-@ExtensionMethod | 向现有类型中添加方法
你可以制作一个包含一堆publicstatic方法的类,这些方法都至少有一个参数。这些方法将扩展第一个参数的类型,就像它们是实例方法一样,使用特性。例如,如果你创建了,你可以使用特性,让它看起来像类有一个名为的方法,它没有参数。静态方法的第一个参数填补了实例方法中this的这个角色。所有publicstatic、至少有一个类型不是原始的参数的方法都被认为是扩展方法,每个方法都将被注入第一个参数的类型的名字空间,就像它们是实例方法一样。的调用被替换为。注意,如果foo是空的,实际上并不是一个即时的。原创 2024-08-13 08:34:49 · 1210 阅读 · 0 评论 -
Lombok 使用教程-@Accessors | 自定义getters和setters的生成格式
Accessors注解被用来配置lombok如何生成和寻找getters和setters。默认情况下,lombok遵循bean规范的getter和setter。例如,一个名为pepper的字段的getter是getPepper。然而,有些人可能想打破Bean的规范,以便最终得到更漂亮的API。@Accessors让你做到这一点。有些程序员喜欢为他们的字段使用前缀,例如他们写fPepper而不是pepper。原创 2024-08-13 08:32:56 · 1229 阅读 · 0 评论 -
Lombok 使用教程-@Log | 如何优雅的进行日志记录
在中添加了各种@Log的变体。中的新内容:你可以用log注解来注解任何类,让lombok生成一个logger字段。该logger被命名为log,字段的类型取决于你选择了哪一个logger。中的新内容:增加了谷歌的(通过@Flogger中的新功能:增加了@CustomLog,让你可以通过配置如何用配置键来创建任何日志记录器。您将@Log的变体放在类中(以适用于您使用的日志系统的为准);然后,您有一个静态的final log字段,按照您使用的日志框架通常规定的方式进行初始化,然后您可以使用它来编写日志语句。原创 2024-08-12 08:02:43 · 1388 阅读 · 0 评论 -
Lombok 使用教程-@Getter(lazy=true) | Getter 懒加载
是在中引入的。你可以让lombok生成一个getter,它将在第一次调用这个getter时计算一个值,并从那时起缓存它。如果计算数值需要大量的CPU,或者数值需要大量的内存,这就很有用。要使用这个功能,创建一个变量,用运行成本高的表达式来初始化它,并用来注释你的字段。这个字段将从你的代码的其余部分隐藏起来,并且表达式的评估不会超过一次,即在第一次调用getter的时候。没有神奇的标记值(也就是说,即使你昂贵的计算结果是空的,结果也会被缓存),你昂贵的计算不需要是线程安全的,因为lombok负责锁。原创 2024-08-12 08:01:11 · 979 阅读 · 0 评论 -
Lombok 使用教程-@With | 通过重新构造对象修改不可变属性
Wither是在中作为实验性功能引入的。在中,@Wither被改名为@With,并从实验包中移出,进入核心包。对于一个不可变的属性来说,替代setter的第二种方法是构造一个对象的克隆,但这个字段有一个新值。产生这种克隆的方法正是@With所产生的:一个方法,它产生一个除了相关字段的新值以外的克隆。例如,如果你创建了setters就没有意义了,因为这些字段是final的。@With可以为你生成一个方法,该方法将返回一个新的点,其x的值为newXValuey的值与原y相同。@With。原创 2024-08-12 07:59:45 · 856 阅读 · 0 评论 -
Lombok 使用教程-@Synchronized | 如何优雅的添加Synchronized锁
是方法修饰语的一个更安全的变体。和一样,该注解只能用于静态和实例方法。它的操作与关键字类似,但它锁定的对象不同。关键字锁定了这个对象,但注解锁定了一个名为$lock的字段,它是私有的。如果你愿意,你可以自己创建这些锁。如果你已经自己创建了$lock和$LOCK字段,当然就不会再生成它们。你也可以选择锁定另一个字段,通过指定它作为注释的参数。在这种用法的变体中,字段不会被自动创建,你必须自己明确地创建它们,否则会发出一个错误。原创 2024-08-12 07:58:13 · 829 阅读 · 0 评论 -
Lombok 使用教程-@SneakyThrows | 如何优雅的抛出异常
可用于偷偷抛出已检查的异常,而无需在方法的throws子句中实际声明。当然,这种有点争议的能力应该谨慎使用。lombok生成的代码不会忽略、包装、替换或以其他方式修改抛出的选中异常;它只是伪造了编译器。在JVM(类文件)级别上,不管方法的throws子句如何,都可以抛出所有异常(无论是否检查),这就是为什么这样做的原因。一个不必要的严格的接口,比如Runnable–无论你的run()方法中传播出什么异常,无论是否检查过,它都会被传递给Thread的未处理异常处理程序。捕捉一个被检查的异常并将其包装在某种。原创 2024-08-11 20:09:40 · 1144 阅读 · 0 评论 -
Lombok 使用教程-@Builder | 提供 Builder 形式轻松实现对象创建
在中,@Builder被作为实验性功能引入。@Builder获得了@Singular的支持,并从开始晋升为lombok主包。在中增加了功能。从开始是合法的(并且会抑制生成builder方法)。从开始,是合法的(并将生成具有指定访问级别的构建器类、构建器方法等)。@Builder注解可以为你的类产生复杂的构建器API。@Builder可以被放在一个类上,或者一个构造函数上,或者一个方法上。虽然 "在类上 "和 "在构造函数上 "的模式是最常见的使用情况,但。原创 2024-08-11 20:08:15 · 1184 阅读 · 0 评论 -
Lombok 使用教程-@Value | 轻松实现不可变类
在中,@Value被作为实验性功能引入。自以来,@Value不再意味着@With。自以来,@Value被提升为lombok主包。@Value是@Data的不可更改变体;默认情况下,所有字段都是private和final的,并且不会生成setter。默认情况下,类本身也是final的,因为不可变性不是可以强加给子类的东西。与@Data一样,还生成了有用的toString()equals()和hashCode()原创 2024-08-11 20:05:17 · 891 阅读 · 0 评论 -
Lombok 使用教程-@Data | 整合 @ToString, @EqualsAndHashCode, @Getter,@Setter 和 @RequiredArgsConstructor
Data是一个方便的快捷注解,它将@ToString和的功能捆绑在一起。换句话说,@Data生成了所有通常与简单POJO)和Bean相关的模板:所有字段的getters,所有非final字段的setters,以及适当的toStringequals和hashCode实现,这些都涉及到类的字段,还有一个初始化所有final字段的构造函数,以及所有没有初始化器的非final字段,这些都被标记为@NonNull,以确保字段永不为空。@Data就像在类上有隐式的@Getter@Setter@ToString和。原创 2024-08-09 08:55:12 · 770 阅读 · 0 评论 -
Lombok 使用教程-@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor | 自动生成类的构造函数
这组3个注释生成一个构造函数,该构造函数将为某些字段接受1个参数,并将该参数简单地分配给该字段。将生成一个没有参数的构造函数。如果这是不可能的(因为有final字段),将产生一个编译器错误,除非使用,那么所有最终字段将被初始化为。对于有约束条件的字段,如@NonNull字段,不会产生检查,所以要注意这些约束条件一般不会被满足,直到这些字段在以后被正确初始化。某些java构造,如hibernate和服务提供者接口,需要一个无args构造函数。这个注解主要是与@Data或其他构造函数生成注解结合使用。原创 2024-08-09 08:48:41 · 1155 阅读 · 0 评论 -
Lombok 使用教程-@EqualsAndHashCode | 自动生成类的 Equals 和 HashCode 方法
任何类的定义都可以用来注释,让lombok生成和hashCode()方法的实现。默认情况下,它将使用所有非静态、非瞬时的字段,但是你可以通过用或标记类型成员来修改哪些字段被使用(甚至指定各种方法的输出被使用)。另外,你可以通过用标记它们并使用来精确指定你希望使用的字段或方法。如果将应用于一个子类,这个功能就变得有点棘手了。通常情况下,为这类自动生成equals和hashCode方法是个坏主意,因为父类也定义了字段,这些字段也需要代码,但这些代码不会被生成。通过设置callSuper为true。原创 2024-08-09 08:46:50 · 1191 阅读 · 0 评论 -
Lombok 使用教程-@ToString | 自动生成类的 ToString 方法
任何类定义都可以用@ToString注释,以使lombok生成ToString()方法的实现。默认情况下,它将按顺序打印您的类名以及每个字段,并用逗号分隔。通过设置参数为true,你可以为toString()方法的输出增加一些清晰度(但也有相当的长度)。默认情况下,所有非静态字段将被打印。如果你想跳过某些字段,你可以用来注释这些字段。另外,你可以通过使用,然后用标记你想包括的每个字段,来准确指定你希望使用的字段。通过设置callSuper为true,你可以在输出中包含toString的父类实现的输出。原创 2024-08-09 08:45:00 · 1271 阅读 · 0 评论 -
Lombok 使用教程-@Getter 和 @Setter | 如何优雅的进行对象的getter和setter操作
你可以用@Getter和@Setter来注解任何字段,让lombok自动生成默认的。如果字段名为foo,一个默认的getter则被命名为getFoo(如果字段的类型是布尔型,则被称为isFoo一个默认的setter被命名为setFoo,返回void,并且需要一个与字段类型相同的参数。它只是将字段设置为这个值。生成的方法访问级别将是public,除非你明确指定一个,如下面的例子中所示。合法的访问级别是PUBLICPROTECTEDPACKAGE和PRIVATE。你也可以给一个类加上@Getter和。原创 2024-08-08 08:20:40 · 1445 阅读 · 0 评论 -
Lombok 使用教程-@Cleanup | 如何优雅的自动管理资源,安全地调用你的close()方法。
你可以使用@Cleanup来确保一个给定的资源在代码执行路径退出你的当前作用域之前被自动清理掉。你可以用@Cleanup因此,在所处范围的末尾,in.close()被调用。这个调用通过结构保证运行。请看下面的例子,看看它是如何工作的。如果你想清理的对象类型没有close()方法,而是其他一些无参数的方法,你可以这样指定这个方法的名称。默认情况下,清理方法被认为是close()。一个需要1个或多个参数的清理方法不能通过@Cleanup调用。原创 2024-08-08 08:19:01 · 937 阅读 · 0 评论 -
Lombok 使用教程-@NonNull | 如何优雅的处理字段 NullPointerException 异常
NonNull在中被引入。你可以在一个记录组件上使用@NonNull,或者一个方法或构造函数的参数。lombok将为你生成一个null检查语句。Lombok始终将字段上通常命名为@NonNull的各种注释视为一个信号,以便在Lombok为您生成整个方法或构造函数时生成null检查,例如通过@Data。但是,对参数或记录组件使用lombok自己的会导致在该方法的顶部插入null检查。null检查看起来像并将被插入到方法的最顶端。对于构造函数,null检查将被插入到任何明确的this()或super()原创 2024-08-08 08:17:20 · 1110 阅读 · 0 评论 -
Lombok 使用教程-val 和 var的使用 | 像 JavaScript 一样的去声明变量
val是在中引入的。您可以使用val作为局部变量声明的类型,而不是实际编写该类型。执行此操作时,将从初始值设定项表达式推断类型。局部变量也将成为最终变量。此功能仅适用于局部变量和foreach循环,而不适用于字段。初始值设定项表达式是必需的。val实际上是一种排序的“类型”,在lombok包中作为一个真正的类存在。必须导入它才能使val工作(或使用lombok.val作为类型)。局部变量声明中存在此类型会触发添加final关键字以及复制初始化表达式的类型,从而覆盖“伪”val类型。警告:此功能目前在。原创 2024-08-08 08:15:34 · 761 阅读 · 0 评论