@Helper
在朋友们的帮助下... Java 的 Helper 方法。
@Helper
在 Lombok v1.16.6 版本中作为实验性功能引入。
实验性功能
实验性的原因是因为- 具有通用函数类型的 Lambda 表达式提供了一种替代策略。
- 也许有可能找到一种以更少的样板代码创建 helper 方法的方法,从而使此功能过时。
概述
此注解允许你在方法中放置方法。你可能不知道,但是你可以在方法内部声明类,并且该类中的方法可以访问在声明之前定义和设置的任何(有效)final 局部变量或参数。不幸的是,要实际调用任何方法,你首先必须创建此方法局部类的实例,但这正是 @Helper
发挥作用并帮助你的地方!使用 @Helper
注解方法局部类,就好像该 helper 类中的所有方法都是你可以直接调用的方法一样,就像 Java 允许方法存在于方法内部一样。
通常,你必须声明 helper 的实例,例如:在声明 helper 类之后立即声明 HelperClass h = new HelperClass();
,然后使用 h.helperMethod();
调用 helper 类中的方法。 使用 @Helper
,这两件事都不再需要:你无需浪费一行代码来声明 helper 的实例,也不需要用 nameOfHelperInstance.
为所有对 helper 方法的调用添加前缀。
使用 Lombok
import lombok.experimental.Helper;
|
原始 Java
public class HelperExample {
|
支持的配置键
-
lombok.helper.flagUsage
= [warning
|error
] (默认值:未设置) - 如果配置,Lombok 会将任何
@Helper
的使用标记为警告或错误。
小字说明
@Helper
要求 helper 类具有无参构造函数。如果不是这种情况,将生成编译器错误。
目前,在底层创建的 helper 实例名为 $Foo
,其中 Foo
是你的 helper 的名称。我们将来可能会更改此名称;请不要依赖此变量的存在。我们甚至可能稍后用兄弟方法代替它。
请不要依赖 this
在 helper 方法代码中具有任何意义。你可以使用 NameOfMyClass.this
语法来引用真正的 'this'。
在 helper 方法声明下方的代码中,任何与 helper 中任何方法同名的非限定方法调用都将被假定为对 helper 的调用。如果参数最终不兼容,你将收到编译器错误。
除非你使用的是 JDK8 或更高版本(引入了“有效 final”的概念),否则如果你希望在方法局部类中引用局部变量和参数,则必须将它们声明为 final
。这是一个 Java 限制,而不是 Lombok 的 @Helper
特有的。