@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 的實例,也無需在所有對 Helper 方法的呼叫前加上 nameOfHelperInstance.
前綴。
使用 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
特有的問題。