Lombok 變更日誌
v1.18.36 (2024年11月15日)
- 平台:新增 JDK23 支援。
- 錯誤修正:使用
com.pro-crafting.tools:jasperreports-maven-plugin
的 Eclipse 專案現在可以編譯了。
v1.18.34 (2024年6月28日)
- 平台:新增 Eclipse 2024-06 支援;如果您在使用此修復程式之前的
@Builder
或@Singular
,您會在記錄中取得一些NoSuchMethodError
追蹤。 問題 #3638。 - 不太可能造成重大變更:Lombok 現在預設會將
@lombok.Generated
新增至其產生的方法和型別。這可能會意外地增加您的測試涵蓋率百分比。 問題 #3667。 - 不太可能造成重大變更:當
lombok.config
包含lombok.onX.flagUsage = WARNING
時,從現在開始,如果使用 onX,實際上會產生警告。問題 #2848 - 錯誤修正:當在具有泛型陣列型別的型別上使用
@SuperBuilder
時,會發生錯誤wrong number of type arguments
。 問題 #3694。 - 功能:Lombok 會為您產生大多數新增方法的 javadoc;在此版本中,javadoc 也會新增至產生的建構子。 問題 #933。
v1.18.32 (2024年3月20日)
- 平台:初步新增 JDK22 支援。
- 平台:新增 Eclipse 2024-03 支援。 問題 #3620。
- 平台:新增對近期版本 Eclipse 的支援 (大約在 2023 年第四季或之後發布),這些版本會導致 Eclipse 記錄中出現失敗,例如
java.lang.NoSuchMethodError: 'java.lang.StringBuffer org.eclipse.jdt…
。 問題 #3564。 - 功能:已推出
@Locked
功能。與@Synchronized
類似,但使用java.util.concurrent.locks
鎖定而不是synchronized
primitive。感謝 Pim van der Loos 的 PR! 問題 #3506。 - 神奇修復:在 Eclipse 中內聯產生的 getter 會導致 Eclipse 錯誤地將呼叫替換為
@Getter
而不是實際的欄位名稱。 問題 #562。這個問題幾乎古老到可以飲酒了。感謝 Rawi 致力於修復這個問題。 - 錯誤修正:當在具有註解泛型型別的型別上使用
@SuperBuilder
時,會發生錯誤wrong number of type arguments
。 問題 #3592。 - 錯誤修正:可以使用
@ExtensionMethod
建立無限建置迴圈。 問題 #3225。 - 錯誤修正:如果表達式包含名為
value
的變數,則使用@Getter(lazy=true)
會失敗。 問題 #2917。 - 錯誤修正:除非您明確地將其標記為
static
,否則許多 Lombok 功能在包含在外部型別中的 records 上無法正常運作。 問題 #3497 問題 #3559。 - 錯誤修正:使用
com.pro-crafting.tools:jasperreports-plugin
的 Eclipse 專案現在可以編譯了。 - 錯誤修正:當涉及產生的欄位時,
@FieldNameConstants
現在可以運作了。 問題 #3529。 - 不太可能造成重大變更:對於 JSpecify,套件名稱從
org.jspecify.nullness
變更為org.jspecify.annotations
,這可能會導致不同的空值分析。 問題 #3608。
v1.18.30 (2023年9月20日)
- 平台:初步新增 JDK21 支援。 問題 #3393。
- 錯誤修正:直接在方法中的任何
@Helper
類別 (而非更深層的巢狀類別) 都無法運作。 問題 #3370。 - 錯誤修正:如果使用模組系統且 Lombok 在運行時類別路徑上 (不應該這樣,但有時會發生),您會收到分割套件錯誤:
Package org.objectweb.asm in both module lombok and module org.objectweb.asm
。 問題 #3474。 - 錯誤修正:Lombok 在 records 中產生方法時,沒有正確複製它應該複製的註解。 問題 #3315。
- 錯誤修正:對任何包含
@lombok.Singular
的內容執行 delombok 都無法移除該註解。 問題 #1377。 - 錯誤修正:呼叫擴展方法以至於應用自動擴展 (例如,使用 int 呼叫 void ext(long arg)) 會在運行時失敗。 問題 #3463。
- 錯誤修正:擴展方法現在可以用於 records 中。 問題 #3450。
- 錯誤修正:具有複雜初始化表達式的
@Getter(lazy=true)
在 javac 上會失敗。 問題 #3314。 - 錯誤修正:將 maven surefire 外掛程式與基於
module-info.java
的專案一起使用會因SurefireBooterForkException
而失敗。 問題 #3474。
v1.18.28 (2023年5月24日)
- 平台:新增 JDK20 支援。 問題 #3353。
- 錯誤修正:Eclipse 4.27 和 VSCode 1.14.0 會忽略
lombok.config
。 問題 #3332。 - 錯誤修正:record 上原始陣列欄位上的
@NonNull
無法運作。 問題 #3366。 - 功能:Jakarta 有一些非空值註解 (例如
jakarta.annotation.Nonnull
),我們現在支援這些註解。 問題 #3346。 - 錯誤修正:Eclipse 在「尋找參考」和重新命名重構中找不到擴展方法 (
@ExtensionMethod
) 的用法。 問題 #3373
v1.18.26 (2023年2月3日)
- 平台:新增 JDK19 支援。 問題 #3264。
- 錯誤修正:在 eclipse 或 VSCode 中,於
@(Super)Builder
標記的檔案中使用重構腳本:「重新命名欄位」會導致問題。 [問題 #3181] (https://github.com/projectlombok/lombok/issues/3181)。 - 錯誤修正:在 javac 中,將
val
與任何對明確解析為介面中預設實作的方法的呼叫一起使用都無法運作。 問題 #3242。
v1.18.24 (2022年4月18日)
- 平台:新增 JDK18 支援。 問題 #3129。
- 平台:使用 ecj 和 maven 嗎?現在有一個 命令列選項可將 Lombok 整合到您的建置鏈中。 問題 #3143。
- 功能:
@ToString
有一個名為onlyExplicitlyIncluded
的註解參數。現在有一個設定金鑰lombok.toString.onlyExplicitlyIncluded
也可設定此屬性。 問題 #2849。 - 功能:將名為
uShape
的欄位轉換為 getter 很棘手:getUShape
還是getuShape
?社群對於要使用哪種樣式意見分歧。Lombok 執行getUShape
,但如果您偏好getuShape
樣式,請新增至lombok.config
:lombok.accessors.capitalization = beanspec
。 問題 #2693 Pull Request #2996。感謝 @YonathanSherwin! - 功能:您現在可以使用
@Accessors(makeFinal = true)
來建立final
getter、setter 和 with-er。 問題 #1456。 - 錯誤修正:Eclipse 中的各種儲存動作和重構腳本運作得更好了。 問題 #2995 問題 #1309 問題 #2985 問題 #2509。
- 錯誤修正:使用 jasperreports-plugin 的 Eclipse 專案現在可以編譯了。 問題 #1036。
- 錯誤修正:JDK9+ 中
@UtilityClass
類別中的內部類別已損壞。 問題 #3097。 - 錯誤修正:使用
@Builder.Default
對程式碼執行 delombok 會產生與 Lombok 本身不同的程式碼。 問題 #3053。 - 錯誤修正:結合
@NonNullByDefault
和lombok.addNullAnnotations
會產生兩個@Nullable
註解,因此會產生編譯器錯誤。 問題 #3120。感謝 @JohnPaulTaylorII! - 錯誤修正:Eclipse 中的空值分析在增量建置中已損壞。 問題 #3133。
- 錯誤修正:在使用各種重構腳本時,
VerifyError
會出現在最新的 Eclipse 版本中。 問題 #3134。 - 錯誤修正:各種
@Log
註解現在可以放置在內部列舉和 records 上。 問題 #2990。 - 安全性:廣泛報導的 log4j2 安全性問題 (CVE-2021-44228) 對 Lombok 本身或 Lombok 本身的使用,甚至 Lombok 的
@Log4j2
的使用都絕對沒有任何影響:您必須在您的應用程式中運送您自己的 log4j2 依賴項 - 將其更新為 2.17 或以其他方式緩解此問題 (請參閱 CVE 頁面)。為了避免來自依賴項檢查程式的不必要警告,我們對 log4j2 的依賴項 (僅用於測試,不是由我們運送,並且無法以任何方式利用) 已更新為 2.17.1。 問題 #3063 - 不太可能造成重大變更:Lombok 現在了解更多暗示「此欄位絕不應包含空值參考」的註解。因此,Lombok 會複製其中一些新的註解,例如複製到產生的 getter 等。 Pull Request #2904
v1.18.22 (2021年10月6日)
- 平台:新增 JDK17 支援。 問題 #2898。
- 功能:新增
@StandardException
功能。 Pull Request #2702。 - 不太可能造成重大變更:如果底層編譯器和
--release
/--source
選項為 10 或更高版本,Lombok 的val
現在將被final var
取代。這表示複合宣告 (例如val x = 10, y = 12;
) 現在會失敗 (Lombok 舊的val
實作支援它,javac 的var
不支援),但特別是 IDE 支援更可靠。我們認為這是值得的權衡。 - 錯誤修正:使用 Lombok 時,VSCode 中的語法突顯現在可以可靠地運作。 問題 #2950。
- 錯誤修正:Eclipse 的整理匯入功能有時會移除您的
lombok.val
匯入。 問題 #2972。
v1.18.20 (2021年4月2日)
- 平台:新增 JDK16 支援。 問題 #2681。
- 平台:所有 Lombok 功能都已更新,以便在使用 JDK16 的 record 功能時以合理的方式運作。特別是,您可以使用
@NonNull
註解 record 組件,讓 Lombok 將空值檢查新增至您的精簡建構子 (如果需要,將會建立該建構子)。 - 錯誤修正:嘗試使用 lambda 表達式作為
@ExtensionMethod
的參數無法運作。 問題 #2741。 (由 @Rawi01)。 - 錯誤修正:具有現有建構子的
@SuperBuilder
在 Eclipse 中造成問題。 問題 #2704。 (由 @JanRieke)。 - 錯誤修正:將
@SuperBuilder
與手寫的 builder 類別一起使用會造成問題。 問題 #2701。 (由 @JanRieke)。 - 錯誤修正:Lombok 與 Eclipse 2021-03 中的新儲存動作正確互動。
- 可能的錯誤修正:如果使用
MissingSummary
錯誤模式,lombok + errorprone 可能會導致IllegalArgumentException
。 問題 #2730。
v1.18.18 (2021年1月28日)
- 錯誤修正:在底層使用 ecj 的各種工具 (包括 IntelliJ) 可能會導致產生損壞的類別檔案。 PR #2637, lombok-intellij-plugin 問題 #969。
- 錯誤修正:Netbeans 無法再與 1.18.16 搭配使用。 問題 #2612。
- 錯誤修正:當涉及泛型時,ecj 中
@ExtensionMethod
的支援已改善。 問題 #2648, PR #2658 感謝 @Rawi01。 - 平台:使用 sbt 1.4 編譯時,
lombok.config
檔案現在再次運作。 問題 #2645
v1.18.16 (2020年10月15日)
- 錯誤修正:版本 1.18.14 無法安裝在 Eclipse 中,它會破壞 Eclipse。
- 重大變更:mapstruct 使用者現在應該新增對 lombok-mapstruct-binding 的依賴性。這解決了使用 Lombok (和 mapstruct) 編譯模組的問題。
- 不太可能造成重大變更:包含原始型別欄位和參考型別欄位的類別,其產生的 hashcode 已變更。
- 功能:與
@Builder
類似,您現在可以透過例如@SuperBuilder(setterPrefix = "set")
設定@SuperBuilder
的「setter」前綴。我們仍然不鼓勵這樣做。 Pull Request #2357。 - 功能:如果使用
@Synchronized("lockVar")
,如果lockVar
是指靜態欄位,Lombok 產生的程式碼不再會導致關於不正確存取靜態實體的警告。 問題 #678 - 功能:
@Builder
或@SuperBuilder
上的@Jacksonized
將配置 Jackson 在還原序列化時使用此 builder。 Pull Request #2387 感謝 @JanRieke。 @Jacksonized 文件。 - 功能:checkerframework 的支援已更新;相關的註解已在 checkerframework 的 API 中重新命名,Lombok 現在根據其目前的 API 名稱產生註解。
- 功能:新增透過
@EqualsAndHashCode(cacheStrategy = EqualsAndHashCode.CacheStrategy.LAZY)
緩存 hashCode 的選項。 問題 #784 Pull Request #2513 感謝 @andrebrait。 - 平台:新增對使用 OpenJ9 編譯專案的支援 Pull Request #2437
- 平台:改善對近期 JVM/javac 版本 (14 和 15) 和新語言功能的支援。
- 效能:在解析/編譯期間進行了多項效能改進,無論是使用 javac 還是 Eclipse。感謝 @Rawi01!
- 效能:產生的 equals 方法將首先比較原始型別,然後是原始型別包裝器,然後是參考型別欄位。可以使用
@Include(rank=n)
手動重新排序。 Pull Request #2485, 問題 #1543 - 錯誤修正:Delombok 會印出第一個
this
參數。 問題 #2444 - 錯誤修正:將
val
與其泛型包含參考自身的萬用字元的值組合使用,會在 javac 中導致StackOverflowError
。 問題 #2358。 - 錯誤修正:在具有相當複雜的泛型用法的類別上使用
@SuperBuilder
會因「型別引數數量錯誤」而失敗。 問題 #2359 Pull Request #2362 - 錯誤修正:列舉或介面內巢狀類別上的各種 Lombok 註解會在 Eclipse 中造成錯誤。 問題 #2369
- 錯誤修正:嘗試新增具有正好 2 個引數的
@ExtensionMethod
會在 Eclipse 中失敗。 問題 #1441 Pull Request #2376 感謝 @Rawi01。 - 錯誤修正:Javac 在 with 方法上設定了不正確的註解型別。 問題 #2463
v1.18.14 (2020年10月8日)
- 請勿使用此版本。此版本已損壞。變更列在 1.18.16 下
v1.18.12 (2020年2月1日)
- 平台:支援 JDK13 (包括 switch 表達式中的
yield
、delombok 對箭頭樣式 switch 區塊和文字區塊具有更精美的樣式)。 - 平台:支援 JDK14 (包括
pattern match
instanceof 表達式)。 - 功能:在
lombok.config
中,可以匯入其他設定檔,甚至可以從.zip
或.jar
中匯入。 - 功能:您現在可以透過例如
@Builder(setterPrefix = "set")
設定 builder 的「setter」前綴。我們不鼓勵這樣做,但如果您使用的某些程式庫需要它們,請盡情使用。 Pull Request #2174, 問題 #1805。 - 功能:如果您使用
@Builder
的@Singular
,也會產生複數形式,其效果是新增傳遞集合中的所有元素。如果您傳遞空值參考,這會導致無訊息的NullPointerException
。現在,它會導致該例外,但會附加有用的訊息 (使用與@NonNull
相同的設定),或者透過@Singular
上的參數,您可以選擇忽略此類呼叫 (不新增任何內容,立即傳回);這在還原序列化 (例如 Jackson JSON) 和 JPA/Hibernate 程式碼時可能很有用。 問題 #2221。 singular 文件。 - 功能:厭倦了因為 Lombok 產生的 equals 方法無效而無法使用
@javax.annotation.ParametersAreNonnullByDefault
或@org.eclipse.jdt.annotation.NonNullByDefault
?別再煩惱了;Lombok 現在可以在相關位置新增空值註解。在您的lombok.config
中設定您偏好的空值註解風格。適用於toString
、withX
、可鏈式setX
、靜態建構子、build
、builder
等的傳回值,以及equals
、canEqual
的參數,以及 builder 類別的@Singular
標記欄位的複數形式。 問題 #788 - 錯誤修正:如果在 Eclipse 中為綁定到 sonarcloud 的專案使用 sonarlint 外掛程式,您現在不再會在 sonarlint 處理時收到內部錯誤。 問題 #2351
- 錯誤修正:
lombok.experimental.Wither
已被棄用 (已重新命名為lombok.With
)。但是,目的是 Lombok 仍然處理舊的註解,以防您尚未更新您的 Lombok 依賴項。但是,只有對lombok.experimental.*
的星號匯入才有效;明確的匯入會導致 Lombok 不產生任何 with 方法。 問題 #2235 - 錯誤修正:引用標記為
@SuperBuilder
的類別上的泛型內部的內部類別會導致錯誤wrong number of type arguments; required 3
問題 #2262;由 GitHub 使用者@Lekanich
修復 - 謝謝您! - 錯誤修正:
@Builder
產生的一些程式碼在存取欄位時不包含this.
前綴。雖然在語義上沒有關係,但如果您在 Eclipse 中使用「為欄位存取新增此前綴」儲存動作,則儲存動作將會中斷。 問題 #2327 - 錯誤修正:當 Lombok 將 javadoc 從欄位複製到相關方法時,如果 Lombok 將 javadoc 複製到可鏈式 (傳回自身) 的產生 setter,則應產生適當的
@return this
行。在@Builder
中產生「setter」時,它沒有這樣做。Lombok 也沒有為@With
方法產生適當的@return
項目。javadoc 也稍作更新 (javadoc 中的this
參考現在以程式碼標籤呈現)。問題 #2323 - 不太可能造成重大變更:Lombok 現在在其產生的大多數型別簽章中產生限定型別 (因此,
Outer.Inner
而不是僅僅Inner
);這應該避免在 Lombok 放入簽章中的型別最終引用意外的其他型別的特殊情況,如果您的類別實作的介面本身定義了一個與您的原始程式檔中定義的型別同名的型別,則可能會發生這種情況。我告訴過您這是特殊情況。感謝 Hunter Anderson 對此變更做了一些初步工作。 問題 #2268 - 不太可能造成重大變更:執行
java -jar lombok.jar config -v <files>
不再顯示哪些檔案未提及指定的金鑰。使用--non-mentioned
或-n
仍然顯示它們。
v1.18.10 (2019年9月10日)
- 升級:
@Wither
已升級到主套件,重新命名為@With
。否則,註解沒有任何變更。舊的實驗性註解將作為已棄用的註解保留幾個版本。如果您有此註解的lombok.config
設定,則此功能的設定金鑰已重新命名。 - 功能:您現在可以使用新的
@CustomLog
註解結合lombok.log.custom.declaration
設定金鑰來設定自訂記錄器框架。請參閱 記錄文件 以取得更多資訊。 Pull Request #2086 感謝 Adam Juraszek。 - 增強功能:感謝 Mark Haynes,如果已存在 (私有) 建構子,現在也會產生
staticConstructor
。 問題 #2100 - 增強功能:
val
現在能夠解碼複雜表達式的型別 (特別是如果右手邊包含 lambda 和條件 (三元) 表達式)。 Pull Request #2109 感謝 Alexander Bulgakov。 - 增強功能:您現在可以使用設定系統,透過金鑰
lombok.builder.className
設定產生的 builder 類別名稱。請參閱 Builder 文件 和 SuperBuilder 文件 - 增強功能:如果您混淆了 Eclipse 的非空值支援 (例如
@NonNullByDefault
) 與 Lombok 的@NonNull
,您會收到一堆關於不適當的無效程式碼的警告。由於 Till Brychcy 的貢獻,這些警告現在已被抑制! Pull Request #2155 - 增強功能:
@NonNull
現在也可以使用 JDK 的Objects.requireNonNull
或 Guava 的Preconditions.checkNotNull
產生檢查。 問題 #1197 - 實驗功能:Lombok 正在與 checkerframework 合作,以啟用偵測不正確的 builder 用法 (例如忘記在呼叫
build()
之前設定必要屬性)。可以透過將checkerframework = true
新增至您的lombok.config
檔案來開啟此實驗功能。 - 錯誤修正:在欄位上結合使用
@JsonProperty
或@JsonValue
與@Setter
或@Data
有時會在編譯期間拋出 ClassCastException。 問題 #2156 - 錯誤修正:Delombok 會將方法參數中的
List<byte[]>...
之類的內容轉換為List<byte...>...
問題 #2140 - 錯誤修正:如果陣列型別欄位上放置了型別使用註解,Javac 會產生錯誤的 equals 和 hashCode。 問題 #2165
- 錯誤修正:Eclipse 2019-06 + JDK-12 相容性 +
@Singular
builder 項目會產生串聯的錯誤對話方塊。 問題 #2169 - 錯誤修正:如果 package-info.java 不包含套件宣告,Javac 將會拋出 NullPointerException。 問題 #2184
- 錯誤修正:Javac 在建構子、getter 和 setter 上設定了不正確的註解型別。 問題 #2189
- 不太可能造成重大變更:更嚴格地驗證處理識別碼和型別的設定金鑰 (
lombok.log.fieldName
,lombok.fieldNameConstants.innerTypeName
,lombok.copyableAnnotations
)。 - 不太可能造成重大變更:在 builder 內為具有預設值的欄位產生的欄位 (在具有標記為
@Default
的欄位的類別上使用@Builder
) 現在具有$value
作為名稱;不建議直接操作這些欄位,因為還有一個相關的$set
變數也需要考慮在內。 問題 #2115
v1.18.8 (2019年5月7日)
- 功能:您現在可以將
@FieldNameConstants
配置為CONSTANT_CASE
產生的常數,使用lombok.config
選項。請參閱 FieldNameConstants 文件。 問題 #2092。 - 功能:您現在可以抑制在使用
@Builder
時產生 builder 方法;通常是因為您只對toBuilder
方法感興趣。為了方便起見,當您執行此操作時,我們不會發出關於遺失@Builder.Default
註解的警告。 問題 #2046 - 功能:您現在可以變更產生的 builder 類別的存取修飾詞。 問題 #2083。
- 功能:當使用
@NonNull
或任何其他會導致空值檢查的註解時,您可以配置為產生 assert 陳述式來代替。 問題 #2078。 - 功能:Lombok 現在完全知道如何處理
@com.fasterxml.jackson.annotation.JsonProperty
,並將其複製到正確的位置,例如在建立 builder 時。 問題 #1961 問題 #1981 - 平台:一些 Lombok 功能 (最值得注意的是 delombok) 在 JDK12 上失敗。 問題 #2082
- 錯誤修正:傳回交集型別的方法上的 var/val 現在可以在 Eclipse 中運作。 問題 #1986
- 錯誤修正:如果欄位具有 javadoc,則修復 java6 回歸問題。 問題 #2066
- 錯誤修正:Delombok 現在將 java10 自己的 var delombok 為 var,而不是實際的底層型別。 問題 #2049
- 錯誤修正:如果您使用
@Builder
並在 builder 類別中手動編寫build()
方法,javac 會發生錯誤,而不是延遲到您的實作。 問題 #2050 問題 #2061 - 錯誤修正:在非清單上將
@SuperBuilder
與@Singular
一起使用會產生錯誤的emptyList
呼叫。 問題 #2104。 - 不太可能造成重大變更:對於標記為非空的欄位和參數,如果方法主體以 assert 陳述式開頭以確保值不是空值,則不會產生拋出例外狀況的程式碼。
- 不太可能造成重大變更:當使用 ecj 編譯其中包含
@Builder
或@SuperBuilder
的 java 程式碼,且為@NonNull
標記的方法產生 builder setter 方法時,將不會存在明確的空值檢查。但是,在完全相同的檔案上執行javac
會產生空值檢查。現在 ecj 也會產生此空值檢查。 問題 #2120。 - 不太可能造成重大變更:我們稍微變更了 Lombok 產生的異常訊息,以處理
@NonNull
標記的參數。 問題 #2122
v1.18.6 (2019年2月12日)
- 功能:欄位上的 Javadoc 現在也會複製到 Builder 的 setter。感謝 Emil Lundberg 的貢獻。 問題 #2008
- 功能:
@FieldNameConstants
功能現在允許您手動編寫內部型別並在其中新增您喜歡的任何內容;Lombok 會將常數新增至此類別。請參閱更新後的 FieldNameConstants 功能 頁面。 - 功能:現在有一個
lombok.config
金鑰可以配置@ToString
的呼叫父類別行為;它就像@EqualsAndHashCode
一樣,已經有一段時間了。 問題 #1918 - 增強功能:列舉的 toString 產生現在包含列舉常數的名稱。 問題 #1916
- 平台:由於 JDK12 中 switch 陳述式的變更,Lombok 無法與 JDK12 預覽版一起運作。 問題 #1888
- 錯誤修正:在 jdk8 中,結合
@Delegate
和@NonNull
使用會產生錯誤。 問題 #1935 - 錯誤修正:在 Eclipse 中使用新的
@FieldNameConstants
會在錯誤記錄檢視中造成錯誤,如果儲存動作已開啟,則會造成錯誤彈出視窗。 問題 #2024 - 錯誤修正:自 1.18.4 版本以來,delombok ant 任務無法運作,並因
NoClassDefFoundError
而發生錯誤。 問題 #1932 - 錯誤修正:在同一個欄位上結合使用
@Setter
和@Wither
,當該欄位也具有包含--setter--
區段或@param
標籤的 javadoc 時,會導致競爭條件,其中第一個到達欄位的處理常式會取得該部分 javadoc。這是朝向修復 問題 #1033 的一步 - 錯誤修正:編譯多模組專案將會失敗,強制執行新回合。 問題 #1723, 問題 #1858, 問題 #1946, 問題 #2028
v1.18.4 (2018年10月30日)
- 平台:支援 Eclipse Photon。 問題 #1831
- 平台:安裝程式現在可以辨識 Angular IDE 問題 #1830
- 平台:Lombok 的 JDK10/11 支援的許多改進。
- 重大變更:
@FieldNameConstants
功能已完全重新設計。 問題 #1774 FieldNameConstants 文件 - 重大變更:Lombok 現在將始終複製特定的註解 (從欄位到 getter、從欄位到 builder「setter」等等):已知註解的特定策劃清單,在這些情況下,這是正確的做法 (通常是來自各種程式庫的
@NonNull
樣式註解),以及您在lombok.config
檔案的lombok.copyableAnnotations
設定金鑰中明確列出的任何註解。此外,Lombok 在複製這些註解方面更加一致。(先前的行為:Lombok 過去會複製任何簡單名稱為NonNull
、Nullable
或CheckForNull
的註解)。 問題 #1570 和 問題 #1634 - 功能:Lombok 的
@NonNull
註解現在可以用於型別用法 (型別用法上的註解已在 JDK 8 中推出)。@Builder
的@Singular
註解現在正確處理集合上泛型型別的註解:@Singular List<@NonNull String> names;
現在可以正常運作。 - 功能:您現在可以混合使用
@SuperBuilder
和toBuilder
,並且當標記為@Singular
的集合欄位為null
時,toBuilder
不再拋出NullPointerException
。 Issue #1324 - 功能:delombok 現在透過
--module-path
選項支援模組路徑,並且會自動將 lombok 本身加入模組路徑。這應該能讓您 delombok 模組化的專案。 Issue #1848 - 功能:您可以傳遞
@args.txt
給delombok
以從文字檔讀取引數;如果您需要傳遞非常長的類別路徑給 delombok,這會很有用。 Issue #1795 - 錯誤修正:
@NoArgsConstructor(force=true)
會嘗試在 Eclipse 中初始化已初始化的 final 欄位。 Issue #1829 - 錯誤修正:當使用 lombok 編譯模組化 (
module-info.java
樣式) 的程式碼時,如果模組名稱中有點,則會無法運作。 Issue #1808 - 錯誤修正:在 JDK 11 上以 jigsaw 模式嘗試使用 lombok 時,出現關於 lombok 未讀取提供
org.mapstruct.ap.spi
的模組的錯誤。 Issue #1806 - 錯誤修正:修正 NetBeans 儲存時編譯的問題。 Issue #1770
- 錯誤修正:如果您手動編寫 builder 類別以便新增一些您自己的方法,而這些方法參考了產生的方法,您通常會遇到各種奇怪的錯誤訊息,但只會在 JDK9/10/11 上發生。這個問題很難描述,但我們已修正。 Issue #1907
v1.18.2 (2018 年 7 月 26 日)
- 錯誤修正:mapstruct + lombok 在 eclipse 中應該再次正常運作。 Issue #1359 和 mapstruct issue #1159
- 錯誤修正:Equals 和 hashCode 再次預設排除 transient 欄位。 Issue #1724
- 錯誤修正:Eclipse 的「整理匯入 (organize imports)」功能(無論是明確地使用,或是透過「儲存動作 (save actions)」在儲存時自動觸發)會移除
lombok.var
的匯入。 Issue #1783 - 錯誤修正:Lombok 和 gradle v4.9 無法協同運作;此問題已修正。 Issue #1716 和 gradle-apt-plugin issue #87
- 功能:您現在可以使用新的(實驗性)
@SuperBuilder
註解為型別階層建立 builder。感謝 Jan Rieke 的貢獻。@SuperBuilder
文件 - 功能:
@NoArgsConstructor
,包括強制使用lombok.config: lombok.noArgsConstructor.extraPrivate=true
的情況,現在會將使用@Builder.Default
設定的任何預設值納入考量。 Issue #1347
v1.18.0 (2018 年 6 月 5 日)
- 重大變更:在 1.16.22 中引入的組態鍵
lombok.noArgsConstructor.extraPrivate
現在預設為false
。 Issue #1708 - 錯誤修正:如果私有 no-args 建構子會破壞程式碼,則不要產生它。 Issue #1703, Issue #1704, Issue #1712
- 錯誤修正:在 lombok 註解中使用布林參數會失敗。 Issue #1709
- 錯誤修正:Delombok 會給出錯誤訊息。 Issue #1705
- 錯誤修正:如果 lombok 安裝在您的 eclipse 中,則 Eclipse java10 var 支援無法運作。 Issue #1676
- 功能:Google 的 Flogger (又名 FluentLogger) 現在可透過
@Flogger
使用。 Issue #1697 - 功能:
@FieldNameConstants
已擴充以支援前綴和後綴。預設情況下,產生的常數會以FIELD_
作為前綴。 @FieldNameConstants 文件。
v1.16.22 "Envious Ferret" (2018 年 5 月 29 日)
- 功能:
@Data
和@Value
的私有 no-args 建構子,使反序列化框架 (例如 Jackson) 能夠開箱即用。使用lombok.noArgsConstructor.extraPrivate = false
來停用此行為。 - 功能:方法現在可以標記為包含在
toString
、equals
和hashCode
產生中。有一個新的機制來標記哪些欄位(以及現在的方法)要包含或排除在這些方法的產生之外:使用例如@ToString.Include
或@EqualsAndHashCode.Exclude
來標記相關的成員。 ToString 文件 EqualsAndHashCode 文件 - 功能:當放在型別上時,
@Getter
和@Setter
也允許onMethod
和onParam
。 Issue #1653 - 功能:
@FieldNameConstants
是一項新功能,可為您的欄位名稱產生字串常數。 @FieldNameConstants 文件。 - 平台:Lombok 可以在 JDK10 上編譯,並且應該可以在 JDK10 上執行。 Issue #1693
- 平台:lombok 現在被視為 gradle 的增量註解處理器。應該能大幅加速您的 gradle 建置! Issue #1580
- 平台:修正將 lombok 與 JDK9+ 的新
module-info.java
功能一起使用的問題。 Issue #985 - 錯誤修正:解決了 eclipse 中導致「儲存參與者 (save participant) 造成問題」錯誤的一些問題。 Issue #879
- 錯誤修正:Netbeans on jdk9。 Issue #1617
- 錯誤修正:Netbeans < 9。 Issue #1555
- 升級:
var
已從實驗性升級到主套件,且沒有任何變更。「舊的」實驗性版本仍然存在但已被棄用,並且是新主套件版本的別名。 var 文件。 - 舊有項目:
lombok.experimental.Builder
和lombok.experimental.Value
是這些功能仍在實驗性階段時遺留下來的已棄用項目。它們現在已完全移除。如果您的專案依賴於仍有這些項目的舊版本 lombok;別擔心,lombok 仍然會處理這些註解。它只是不再將它們包含在 jar 中。
v1.16.20 (2018 年 1 月 9 日)
- 平台:在新的 IntelliJ、Netbeans 和 Gradle 中,對 jdk9 提供更好的支援。
- 重大變更:lombok config 鍵
lombok.addJavaxGeneratedAnnotation
現在預設為false
而不是 true。Oracle 在發布 JDK9 時破壞了此註解,因此有此重大變更。 - 重大變更:lombok config 鍵
lombok.anyConstructor.suppressConstructorProperties
現在已棄用,並預設為true
,也就是說,預設情況下 lombok 不再自動產生@ConstructorProperties
註解。現在存在新的組態鍵lombok.anyConstructor.addConstructorProperties
;如果您想要舊的行為,請將其設定為true
。Oracle 在發布 JDK9 時或多或少破壞了此註解,因此有此重大變更。 - 開發:現在可以在 JDK1.9 上編譯 lombok。
- 錯誤修正:如果
callSuper=true,of={}
,產生的 hashCode 會破壞契約。 Issue #1505 - 錯誤修正:
delombok
不再列印合成的外部類別參數。 Issue #1521 - 錯誤修正:當存在型別參數時,@Builder.Default 現在也能運作。 Issue #1527
- 錯誤修正:@Builder 現在也能在具有泛型回傳型別的方法上運作。 Issue #1420
- 安裝程式:預設情況下,lombok 安裝程式現在會在
eclipse.ini
和相關檔案中插入絕對路徑,而不是相對路徑。如果您想要舊的行為,可以使用java -jar -Dlombok.installer.fullpath=false lombok.jar
。
v1.16.18 (2017 年 7 月 3 日)
- 平台:自 v1.16.16 以來,JDK9 支援已大幅改進; Issue #985
- 錯誤修正:Lombok 現在可與 Bazel 和 Error Prone 搭配運作。 Issue #1290
- 功能:Lombok 有一個新的 網站!為了更符合網站風格,對程式碼進行了一些非常小的變更,主要是在 javadoc 中。
v1.16.16 "Dancing Elephant" (2017 年 3 月 23 日)
- 功能:
@Builder.Default
可讓您在使用@Builder
時設定欄位的預設值。請參閱 Builder 功能頁面 以取得更多資訊。 Issue #1201 - 平台:JDK9 現在支援編譯(java9 的 delombok 尚不可行)。請注意,您必須進行一些命令列操作。請參閱 Issue #985
- 錯誤修正:如果您新增的註解包含具名參數,並且您正在使用 JDK8 的 javac 編譯,則
onX
功能(可讓您將註解新增到產生的方法)無法運作。我們無法修正此問題(這是 javac 中的錯誤),但我們提供了一種替代的、更美觀的方式在 javac8+ 上執行onX
。 Issue #778 onX 文件 - 錯誤修正:
@Data
和@Value
現在在產生 equals、hashCode 和 toString 時會遵循欄位存取的組態。 Issue #1329 - 錯誤修正:如果來源欄位已棄用,
@Builder
現在會將產生的 builder「setter」標記為@Deprecated
。 Issue #1342 - 變更:
@ConstructorProperties
現在也會為私有和套件私有建構子產生。這對於 Jackson 很有用 Issue #1180
v1.16.14 (2017 年 2 月 10 日)
- 功能:產生的類別、方法和欄位現在也可以使用
@lombok.Generated
註解來註解 Issue #1014 - 平台:Lombok 現在可以與其他尋找 lombok 產生方法的註解處理器一起使用,但前提是 lombok 是第一個執行的註解處理器。受此變更影響最常用的註解處理器是 MapStruct;我們已與 mapstruct 團隊合作,特別允許任何順序。其他註解處理器可能會遵循我們建立的框架來實現此目的;將任何此類處理器的作者指向我們,我們將會解決它 MapStruct issue #510 Lombok issue #973
- 平台:Eclipse:當 lombok 也為此欄位產生 getter 和/或 setter 時,「重新命名欄位 (rename field)」的重構腳本現在更完善 Issue #210
- 錯誤修正:您永遠不會遇到的問題。 Issue #1274
- 棄用:組態鍵
lombok.addGeneratedAnnotation
現在已棄用,請改用lombok.addJavaxGeneratedAnnotation
。
v1.16.12 (2016 年 12 月 5 日)
- 功能:
var
是val
的可變姊妹。目前為實驗性,並使用 flagUsage 組態鍵中的ALLOW
選擇加入。感謝 Bulgakov Alexander 的貢獻。 - 變更:
@Value
和@FieldDefaults
不再觸及 static 欄位 Issue #1254 - 錯誤修正:lambda 運算式中的
val
現在可以如預期般運作 Issue #911 - 錯誤修正:當在 transient 欄位上使用
Getter(lazy=true)
時,現在會發出錯誤訊息 Issue #1236 - 錯誤修正:內部使用 ecj 的註解處理器 (dagger) 不再產生連結錯誤 Issue #1218
- 平台:安裝程式現在可以正確識別 Red Hat JBoss Developer Studio Issue #1164
- 錯誤修正:delombok:初始化器不是區域變數的 for-loops 會產生不正確的程式碼 Issue #1076
v1.16.10 (2016 年 7 月 15 日)
- 功能:新增 JBoss logger 的支援 Issue #1103
- 增強功能:執行
javac -Xlint:all
會產生關於未宣告註解的警告 Issue #1117 - 錯誤修正:Eclipse Mars 在使用
@Delegate
時有時會拋出 NullPointerException Issue #913 - 增強功能:新增對舊版 maven-compiler-plugin 的支援 Issue #1138
v1.16.8 (2016 年 3 月 7 日)
- 平台:開始 jdk9 支援:不再出現關於
pid
的錯誤訊息 - 功能:
@Builder
更新:如果使用@Singular
,現在會產生clearFieldName()
方法。 Issue #967。 - 功能:
@Builder
更新:註解現在可以放在實例方法上。 Issue #63。 - 功能:
@Builder
更新:@Singular
現在支援 guava 的 ImmutableTable Issue #937。 - 功能:現在可以使用
lombok.config
鍵來使您的欄位到處都是final
和/或private
。我們將在一段時間內監控這對效能的影響。如果您開啟這些選項,我們將會觸及每個原始碼檔案,即使您不開啟,我們也必須為每個檔案呼叫 lombok 組態系統。 - 功能:現在可以使用
lombok.config
鍵來設定@EqualsAndHashCode
在為擴充某些內容的類別產生方法時,關於是否呼叫equals
和hashCode
的父類別實作的預設行為。 Issue #965。 - 功能:將
@Wither
放在抽象類別上現在會產生稍微更有用的內容:抽象 wither 方法。 Issue #945。 - 錯誤修正:
@Helper
過去只在非常特定的位置才是合法的;現在它幾乎可以在任何地方運作。 - 錯誤修正:具有顯式型別的 1 個引數的 lambda 未正確地美化列印。 Issue #972。
- 錯誤修正:當使用 delombok 時,僅在參數上具有
@NonNull
註解作為 lombok 功能的原始碼檔案將無法正確 delombok。 Issue #950。 - 錯誤修正:javac 中的
@Delegate
會產生陣列而不是 varargs 參數。 Issue #932。 - 錯誤修正:
@Value
和@FieldDefaults
不再使未初始化的 static 欄位成為 final。 Issue #928。 - 增強功能:
@Builder.ObtainVia
現在具有@Retention(SOURCE)
Issue #986。 - 增強功能:將
@NonNull
放在抽象方法的參數上不再產生警告,讓您可以使用此註解來記錄預期的行為 Issue #807。
v1.16.6 (2015 年 8 月 18 日)
- 功能:
@Helper
可以放在方法區域的內部類別上,以使類別中的所有方法可供方法的其餘部分存取。 完整文件。 - 功能:
@Builder(toBuilder = true)
現在可用。它產生一個實例方法,該方法會建立一個新的 builder,並使用該實例的所有值初始化。如需更多資訊,請閱讀 Builder 功能頁面。 - 功能:lombok 透過
@EqualsAndHashCode
、@Data
和@Value
產生的hashCode()
方法現在更聰明地處理 null;它們被視為雜湊到魔術質數而不是 0,這減少了雜湊衝突。 - 功能:即使存在 final 欄位,也可以使用
@NoArgsConstructor(force = true)
來建立 no args 建構子。 - 錯誤修正:具有
@Builder
的參數化 static 方法會在 javac 中產生編譯器錯誤。 Issue #828。 - 錯誤修正:JDK8 中引入的新增註解到型別的功能未正確 delombok。 Issue #855。
- 效能:如果檔案系統非常慢(網路檔案系統)或具有緩慢的驗證系統,組態系統會導致 eclipse 中顯著的效能降低。
- 錯誤修正:Eclipse Mars 中的各種快速修復已損壞。 Issue #861 Issue #866 Issue #870。
v1.16.4 (2015 年 4 月 14 日)
- 錯誤修正:Lombok 現在可與 Eclipse Mars 搭配運作。
- 錯誤修正:如果使用 ecj/eclipse 編譯,
@UtilityClass
可能會導致未初始化的 static 變數。 Issue #839 - 錯誤修正:此版本的 lombok 具有重構的啟動器(v1.16.0 中引入的啟動器),它修正了與 eclipse 中關於載入類別、找不到 lombok 類別以及 ClassLoaders 上錯誤的各種錯誤。可能影響 Issue #767 和 Issue #826 中的問題。
v1.16.2 (2015 年 2 月 10 日)
- 功能:組態鍵
lombok.extern.findbugs.addSuppressFBWarnings
現在可用於將 findbugs 抑制警告註解新增到 lombok 產生的所有程式碼。這解決了功能請求 Issue #737。 - 功能:新的 lombok 註解:
@UtilityClass
,用於建立工具類別(不可實例化,僅包含 static「function」方法)。請參閱 功能文件 以取得更多資訊。 - 錯誤修正:ant
delombok
工作在 v1.16.0 之後已損壞。請注意,task def 類別已變更;taskdeflombok.delombok.ant.Tasks$Delombok
而不是舊的lombok.delombok.ant.DelombokTask
。 Issue #810。 - 錯誤修正:如果在內部類別中使用,javac 中的
val
偶爾會失敗。這已(可能)修正。 Issue #729 和 Issue #616。 - 錯誤修正:從 v1.16.0 開始,如果 lombok 位於路徑中包含空格的路徑中,則作為可執行 jar 執行會失敗。 Issue #812。
- 錯誤修正:v1.16.0 無法在舊版 eclipse 版本(例如 eclipse indigo)中運作。 Issue #818。
v1.16.0 "Candid Duck" (2015 年 1 月 26 日)
- 錯誤修正:使用 java 8 的 Eclipse 中,
@ExtensionMethod
已損壞。 Issue #777, Issue #782 - 錯誤修正:delombok:在您的原始碼檔案中使用特殊字元會過度熱心地使用 backslash-u 逸出它們。現在,所有字元都以未逸出的方式列印,前提是您選擇的編碼可以支援它們。否則,它們會被逸出。 Issue #794
- 升級:
@Builder
已從實驗性升級到主套件,並進行了一些變更(新增@Singular
,移除fluent
和chain
選項)。舊版本仍然存在且已被棄用。 - 功能:
@Builder
現在支援將@Singular
註解新增到表示集合的任何欄位/參數,這會在產生的 builder 中產生一個方法,該方法會接收該集合的一個元素並將其新增。Lombok 負責產生適當的程式碼來產生適當型別的壓縮不可變版本。在此版本中,支援 java.util 集合和 guava 的 ImmutableCollections。請參閱 功能文件 以取得更多資訊。 - 功能:新增了一個啟動器到 lombok 啟動程序,這消除了在您的
eclipse.ini
檔案中加入-Xbootclasspath
的需求,並從 lombok jar 中移除了所有非公開 API 和協力廠商依賴項(例如 ASM),從而將它們從 IDE 自動完成功能中移除,適用於任何使用 lombok 的專案。對於那些偵錯 lombok 的人來說,啟動器啟用了熱程式碼替換,這使得偵錯變得容易得多,因為以前需要關閉 IDE、重建 jar 並重新啟動。將-Dshadow.override.lombok=/path/to/lombok/bin
新增到啟動目標以進行熱程式碼替換。
v1.14.8 (2014 年 9 月 15 日)
- 效能:組態系統通常每次讀取組態鍵時都會擊中檔案系統兩次,而不是幾乎從不擊中。這是 Issue #717 的延續。
v1.14.6 (2014 年 9 月 2 日)
- 錯誤修正:從 JDK8 版本
1.8.0_20
開始,val
的使用會損壞。 Issue #766 - 錯誤修正:根據您的 eclipse 專案設定,v1.14.0 到 v1.14.4 版本可能會顯著降低您的 eclipse 速度。 Issue #717。
v1.14.4 (2014 年 7 月 1 日)
- 錯誤修正:GWT 在任何使用 lombok 的原始碼檔案中的第 1 行的處理常式中產生錯誤;此問題已修正。 Issue #734
- 錯誤修復中:eclipse 中的許多 pathfinder 問題(請參閱 v1.14.2 中正在進行的錯誤修復)現在已修正。 Issue #717
v1.14.2 (2014 年 6 月 10 日)
- 錯誤修正:v1.14.0 中的語法突顯在 eclipse 中會變得奇怪,且自動完成可能會停止運作,以及 v1.14.0 中的其他 eclipse 功能(從 v1.12.6 回歸)。 Issue #723
- 功能:新增
@Tolerate
;將此註解放在任何方法或建構子上,lombok 在考慮是否產生方法或建構子時會跳過它。如果您的方法的參數型別與 lombok 將產生的內容不衝突,這會很有用。 - 功能:新增組態鍵
lombok.getter.noIsPrefix
,可讓您停用isFoo()
的使用和產生,而是針對 {@code boolean} 欄位使用getFoo()
。 - 錯誤修正:eclipse 日誌中出現
ASTConverter.convertType
中的IndexOutOfBound: 2
錯誤。 Issue #721 - 錯誤修復中:eclipse 中尚未知的條件會導致日誌中出現大量
IllegalArgumentException
,訊息為「路徑必須包含專案和資源名稱」。此外,當使用特殊檔案系統抽象(例如 Jazz)時,可能會發生「無效 URL」或「URI 不是絕對的」錯誤。這些錯誤尚未修正,但不會發生災難性故障,而是會發出警告日誌。 Issue #717 - 錯誤修正:mvn 建置失敗,並出現「URI 不是絕對的」例外。 Issue #718
v1.14.0 "Branching Cobra" (2014 年 5 月 27 日)
- 功能:您現在可以透過 組態系統 來組態 lombok 專案範圍(甚至工作區範圍,或僅針對單一套件)的各個方面。您可以組態許多內容;執行
java -jar lombok.jar config -gv
以取得完整列表。 - 棄用:
@Delegate
已移至lombok.experimental.Delegate
,並且遞迴委派等極端情況(委派本身具有使用@Delegate
註解的欄位或方法的型別)現在是錯誤情況。請參閱 功能文件 以取得更多資訊。 - 功能:現在可以透過在
@EqualsAndHashCode
上指定onParam=
選項,將註解(例如@Nullable
)放在產生的equals()
方法的一個參數上,類似於@Setter
已存在的該功能。 Issue #709 - 變更:suppressConstructorProperties 現在應該透過 lombok 組態進行組態。 Issue #694
- 變更:
@EqualsAndHashCode
、@Value
和@Data
產生的canEqual
方法現在是protected
而不是public
。 Issue #695 - 錯誤修正:大幅改進對 JDK8 的支援,包括 javac 和 eclipse。
- 錯誤修正:在使用 lazy getter 時,eclipse 中偶爾會發生死鎖 Issue #625
- 錯誤修正:搭配 JDK8 的 javac 和
-target 1.8
使用@SneakyThrows
會導致後編譯器錯誤。 Issue #690 - 錯誤修正:在某些版本的 eclipse 上切換工作區會導致「重複欄位 (duplicate field)」錯誤。 Issue #701
v1.12.6 (2014 年 3 月 6 日)
- 錯誤修正:在專案建置期間,eclipse 中偶爾會發生死鎖,尤其是在使用 gradle 外掛程式時。 Issue #680
- 平台:新增對 Eclipse Luna 的支援。 Issue #644
- 平台:針對 kepler 中的 eclipse alpha 支援,新增初始 JDK8 支援。 Issue #632
- 功能:各種
@Log
註解現在支援topic
參數,該參數會設定記錄器的名稱。預設值仍然是類別本身的完整限定型別名稱。 Issue #667。 - 錯誤修正:將 lombok 與 IntelliJ 和 IBM JDK 一起使用會導致初始化期間出現 NPE。 Issue #683。
- 錯誤修正:Eclipse 快速修復以 try/catch 區塊包圍 (Surround with try/catch block) 在
@SneakyThrows
註解的方法內無法運作 Issue #511。 - 錯誤修正:Eclipse 重構提取區域變數 (Extract Local Variable) 在
@SneakyThrows
註解的方法內無法運作 Issue #668。 - 錯誤修正:{Netbeans} @SneakyThrows 會導致未使用的匯入並破壞重構 Issue #544。
- 錯誤修正:Eclipse 整理匯入會產生錯誤:AST 不得為 null Issue #666。
- 錯誤修正:將 javadoc 複製到 getter / setter / wither 也會複製不相關的區段。 Issue #620。
- 增強功能:Lombok 過去隨附 JNA。它使 lombok.jar 的大小增加了超過 800k,並且可能會干擾您本機環境中 JNA 的使用,尤其是在 eclipse 中。 Issue #682
- 詳細資訊:{Delombok} 在 enum 主體內部,delombok 格式器不遵循 emptyLines 指令 Issue #664。
- 詳細資訊:使用較小的質數 (<127) 來產生雜湊碼 Issue #660
v1.12.4 (2014 年 1 月 15 日)
- 錯誤修正:v1.12.2 的 delombok 將所有 operator+assignments 變成僅僅 assignment。已修正。 Issue #633
- 錯誤修正:{Netbeans} v1.12.2 無法與 netbeans 良好協同運作。 Issue #626
- 增強功能:Delombok 現在支援各種選項,用於格式化產生的原始碼檔案。這包括掃描原始碼以尋找諸如偏好的縮排之類的東西。使用選項
--format-help
以取得更多資訊。 Issue #643 - 詳細資訊:lombok 產生的用於產生的 hashCode() 方法中的質數過去是直接從 Effective Java 複製的。事實證明,這些特定的質數使用得非常頻繁,它們往往更容易發生雜湊衝突,因此我們切換了它們。現在使用「277」而不是「31」。布林值的質數也已變更。 Issue #660
v1.12.2 (2013 年 10 月 10 日)
- 平台:初始 JDK8 支援,不影響現有的 JDK6 和 7 支援。 Issue #524。雖然 lombok 現在可以在 JDK8 / javac8 以及 netbeans 7.4 及更高版本上運作,但 lombok 尚不 (尚未) 支援 java8 引入的新語言功能,例如 lambda 運算式。對這些功能的支援將在未來版本中新增。
- 平台:在 IBM J9 VM 上執行 javac 會在使用 lombok 編譯時導致 NullPointerExceptions。這些問題應該已修正。 Issue #589。
- 變更:[與 JDK8 相關] 現在編寫 onMethod / onParameter / onConstructor 註解的標準方式是使用雙底線而不是單底線,因此,現在,使用此功能的正確方式是
@RequiredArgsConstructor(onConstructor=@__(@Inject))
。舊方式(單底線)仍然有效,但在 javac 8 上產生警告。 - 錯誤修正:在抽象方法上使用
@NonNull
過去會在編譯期間導致例外。 Issue #594。 - 錯誤修正:在也具有
@SneakyThrows
或@Synchronized
的方法上使用@NonNull
會導致任意行為。 Issue #623。 - 德國:主要版本從 0 升級到 1,據稱這很重要。請放心,此變更仍然向後相容。
v0.12.0 "憤怒的蝴蝶" (2013年7月16日)
- 新功能:欄位上的 javadoc 現在會複製到產生的 getter / setter / wither。現在可以為欄位、setter 和 getter 指定個別的 javadoc,並且會適當地處理
@param
和@return
。解決功能請求 問題 #132。@Getter 和 @Setter 文件。@Wither 文件。 - 變更:
@Getter(lazy=true)
的 desugaring 現在物件建立密集度較低。文件已更新,以反映新的 desugaring 外觀。@Getter(lazy=true) 文件。 - 升級:
@Value
已從實驗性套件升級到主要套件,且未進行任何變更。「舊」的實驗性套件仍然存在但已被棄用,並且是新主要套件的別名。@Value 文件。 - 新功能:{實驗性}
@Builder
支援。我們最早的功能請求問題之一,問題 #89,終於獲得解決。@Builder 文件。 - 新功能:方法或建構子參數上的
@NonNull
現在會在您方法的開頭產生 null 檢查陳述式。此 null 檢查將會拋出一個NullPointerException
,訊息為參數的名稱。問題 #549 - 錯誤修正:使用
Lombok.sneakyThrow()
或@SneakyThrows
有時會導致無效的類別(無法通過VerifyError
的類別)。問題 #543 - 錯誤修正:在 try-with-resources 中使用
val
無法在 javac 上運作。問題 #555 - 錯誤修正:當使用
@Data
時,如果某些方面因為您撰寫了明確的版本而未產生,則不會產生警告。但是,這在equals
/hashCode
/canEqual
方面會造成混淆,因為如果這些方法中的任何一個存在,則不會產生任何內容。現在,如果equals
或hashCode
其中之一存在但另一個不存在(或canEqual
存在但equals
和/或hashCode
遺失),則會發出警告以說明 lombok 不會產生任何 equals / hashCode 方法,並且您應該自己撰寫所有方法或全部移除。問題 #548 - 錯誤修正:可能修正了 patcher 中的競爭條件 問題 #566。
v0.11.8 (2013年4月23日)
- 新功能:透過分析專案清除流程,大幅提升 eclipse 的效能。
- 變更:{實驗性} 實驗性的
@Value
功能不再暗示同樣是實驗性的@Wither
。如果您希望您的@Value
類別建立 wither,請在@Value
旁邊新增@Wither
到類別中。 - 新功能:{實驗性} 重新引入
onMethod
、onConstructor
和onParam
到@Getter
、@Setter
、@Wither
和@XArgsConstructor
。這些參數允許您將註解新增到 lombok 將會產生的方法/建構子上。這是一個權宜之計功能:此功能在未來 javac 版本上的穩定性無法保證,如果找到更好的方法來實作此功能,則此功能目前的實作方式將會在沒有合理的棄用期下移除。關於 onX 功能的文件 - 新功能:透過
@Log4j2
新增了對 Log4j v2.0 的支援 問題 #505 - 增強功能:Lombok 安裝程式現在可以找到 Lombok 並將其安裝到 JBoss Developer Studio 中。安裝程式現在也會在您的主目錄中尋找 eclipse 和 eclipse 變體。問題 #507
- 錯誤修正:當在方法呼叫的運算式(其回傳類型為類型變數)上呼叫擴充方法時,
@ExtensionMethods
不再會導致執行 eclipse 編譯程式碼時發生VerifyError
例外。例如,someList.get(i).extensionMethod()
會以這種方式失敗。問題 #509 - 錯誤修正:java 7 的 try-with-resources 陳述式無法正確地 delombok。問題 #532
v0.11.6 (2012年10月30日)
- 新功能:可以使用 JVM 參數
-Dlombok.disable
完全停用任何給定編譯執行中的 Lombok。這可能對程式碼樣式檢查器等工具很有用。 - 新功能:新增了對 Slf4j 擴充記錄器的支援 問題 #494
- 錯誤修正:{Delombok} 自 0.11.0 以來,使用 javac 1.7 時執行 delombok 一直導致 VerifyError 錯誤。問題 #495
- 錯誤修正:lombok 和某些 eclipse 外掛程式之間的衝突會在使用
@Delegate
時導致記錄中出現 NullPointerExceptions。 - 錯誤修正:使用 javac 中的
@ExtensionMethod
且涉及產生的建構子時,lombok.​javac.​handlers.​JavacHandlerUtil.​upToTypeNode​(JavacHandlerUtil.java:978) 中的 NullPointerException
。問題 #496 - 錯誤修正:在 eclipse 中,在具有產生 setter 的欄位上使用
@Deprecated
會導致IllegalArgumentException
,除非您開啟錯誤記錄,否則您不會看到此錯誤。如果您定義了儲存動作,則會彈出一個包含例外狀況的快顯視窗。現在已修正。問題 #481
v0.11.4 (2012年8月13日)
- 新功能:{實驗性}
@Value
、@Wither
和@FieldDefaults
現在可用。這些與@Data
非常相似,但適用於不可變的類別。關於 @Value 的文件、關於 @Wither 的文件 和 關於 @FieldDefaults 的文件。 - 錯誤修正:如果使用
@ExtensionMethod
,Eclipse 會拋出 OOME。問題 #463 - 錯誤修正:{Netbeans}
@Cleanup
和@Synchronized
在 netbeans 編輯器中導致的問題大幅減少。問題 #466 - 錯誤修正:{安裝程式} 安裝程式抱怨需要 root 權限才能從 eclipse 安裝中安裝或移除 lombok 的錯誤訊息已修正。此問題的安裝程式邊緣實際上已在 v0.11.2 中修正。問題 #436
- 錯誤修正:
@ExtensionMethod
在 javac 中存在各種問題。問題 #472 - 錯誤修正:當您有具有泛型的欄位(即
Class<T>
)時,使用 javac 產生靜態建構子會導致錯誤。問題 #469 - 錯誤修正:eclipse 中與
@ExtensionMethod
相關的次要問題,例如現在不再可能在super
參考上呼叫擴充方法。問題 #479
v0.11.2 "衝刺的卡卡波" (2012年7月3日)
- 新功能:{實驗性}
@ExtensionMethod
現在可用於以靜態方法的形式將擴充功能新增至任何類型,靜態方法將該類型的物件作為第一個參數。關於 @ExtensionMethod 的文件 - 新功能:持續進行中:修正將 lombok 與 gwt-designer 一起使用時的問題。
- 增強功能:
equals
和hashCode
的小幅效能增強。問題 #439 - 錯誤修正:Eclipse 會在錯誤的位置顯示關於無效超類別建構子的錯誤訊息。問題 #409
- 錯誤修正:Eclipse 重構指令碼「重新命名方法引數」應更常與受 lombok 影響的方法一起運作。
- 錯誤修正:如果 iterable 是原始類型,則在增強型 for 迴圈中使用
val
無法運作。 - 錯誤修正:當資料類型為 boolean、int、array 或某些其他需要針對 hashCode/equals 進行特殊處理的類型時,
@Getter(lazy=true)
現在可以與@Data
、@EqualsHashCode
和@ToString
正確搭配運作。問題 #449 - 錯誤修正:建構子中的
SneakyThrows
不應將 this/super 呼叫包裝在 try 區塊中 問題 #454 - 錯誤修正:無法在第一個產生的方法之上的程式碼上設定中斷點。問題 #450
v0.11.0 (2012年3月26日)
- 新功能:{實驗性} 此 lombok 版本引入了「fluent」getter 和 setter(僅使用
fieldName
作為方法名稱,而不是getFieldName
)、回傳this
而不是void
的 setter,以及對具有前綴的欄位的支援。此外,現在會考量任何現有同名方法的參數數量,而 lombok 會產生這些方法;先前,如果您有任何名為setX
的方法,無論它有多少參數,lombok 都會避免產生setX
方法。現在,如果所有目前的setX
方法的參數數量都非 1,則 lombok 會產生該方法。文件。 - 新功能:
@Delegate
和@Getter
或@Data
的組合現在會委派給產生的 getter 的結果。問題 #401 - 新功能:現在可以透過執行
java -jar lombok.jar publicApi
並將產生的 jar 包含在您的專案中,在 eclipse 上開發使用 lombok 的 android 應用程式。關於使用 lombok 進行 android 開發的文件。 - 錯誤修正:在 NetBeans 中,即使 Lombok 也產生了建構子,仍然會產生預設建構子。問題 #399
- 錯誤修正:某些包含 @SneakyThrows 的類別無法編譯(拋出 ClassFormatError)。問題 #412
- 錯誤修正:delombok:當
@Delegate
產生類型參數為T extends package.Class
的方法時,會在類型名稱前面加上一個點。問題 #414 - 錯誤修正:@Getter 和 @Setter 現在會為已棄用的欄位產生已棄用的方法。修正了 問題 #415
- 錯誤修正:@Delegate 不會在 javadoc 中標記為已棄用的方法上產生 @Deprecated。修正了 問題 #421
- 錯誤修正:現在可以使用類型為
Outer<TypeArgs>.Inner
的val
。問題 #416 - 錯誤修正:變數類型為原始類型且初始化運算式為不同的原始類型(會隱含地進行類型強制轉換,即 int 可以指派給 long 而無需轉換)的
@Getter(lazy=true)
之前無法運作。問題 #418 - 錯誤修正:
val
在基本 for 迴圈(舊式,而非 foreach 式)中不再合法。這些變數很少應該是 final,而且實際上無法正確地 delombok 此程式碼。問題 #419 - 錯誤修正:PrettyCommentsPrinter 現在會列印註解方法的預設子句。修正了 問題 #423
v0.10.8 (2012年1月19日)
- 新功能:
@Delegate
現在可以用於無引數方法,其運作方式與將其新增至欄位類似。請參閱 文件。 - 錯誤修正:當使用 lombok 註解產生方法時,Eclipse 重構「提取介面」已損壞。問題 #159
- 錯誤修正:當使用 lombok 註解產生方法或欄位時,Eclipse 動作「排序成員」已損壞。問題 #338
- 錯誤修正:當使用 lombok 註解時,Eclipse 動作「重構/重新命名」在內部類型上已損壞。問題 #389
- 錯誤修正:當使用 ecj(以及 play framework、gwt 等)時,0.10.6 會導致 ClassNotFoundErrors。問題 #393
- 錯誤修正:當使用帶括號的 lombok 註解時,Eclipse 剖析已損壞。問題 #398
- 增強功能:Lombok 現在會在 Eclipse「關於」對話方塊中新增關於自身的一行。
v0.10.6 (2011年12月19日)
- 效能:已修正 0.10 中引入的在 netbeans 中使用 lombok 時的效能問題(記憶體洩漏)。問題 #315
- 錯誤修正:Eclipse 快速修正「新增未實作的方法」有時會將新的方法 Stub 插入到奇怪的位置,尤其是在存在
@Data
的情況下。問題 #124 - 錯誤修正:如果存在
@Data
,Eclipse 快速修正「將參數指派給新欄位」會將其插入到類別主體之外。問題 #295 - 錯誤修正:在 eclipse 中使用 Alt+Shift+R 重新命名 @Data 註解的類別不再會損壞資料註解。問題 #359
- 錯誤修正:儲存動作「僅在必要時對欄位存取使用此限定詞」在某些情況下無法與
@Data
一起運作。問題 #374 - 錯誤修正:組織匯入,無論是手動執行還是作為儲存動作,都會拋出例外狀況。問題 #381
- 錯誤修正:當存在記錄註解時,提取的常數會放置在類別主體之外。問題 #388
v0.10.4 (2011年11月21日)
- 錯誤修正:現在可以在靜態初始化程式中使用來自
@Log
等的log
欄位。問題 #368 - 錯誤修正:現在可以自動格式化包含 lombok 的程式碼(即使透過自動儲存動作)在 eclipse 上運作。問題 #163
- 錯誤修正:當存在 lombok 註解時,讓 eclipse 產生各種方法現在可以運作。問題 #211
- 錯誤修正:在 eclipse 中重新命名 @Data 註解的類別不再會損壞資料註解。問題 #359
- 錯誤修正:Eclipse 儲存動作將 final 修飾符新增至私有欄位不再將 final 關鍵字新增至
@Setter
欄位。問題 #336 - 錯誤修正:混合標籤和
lombok.val
會導致 javac 中的 NPE。問題 #372 - 錯誤修正:完整寫出
lombok.val
(而不是使用匯入陳述式)在 eclipse 中無法運作。問題 #373
v0.10.2 (2011年11月1日)
- 錯誤修正:當使用 -sourcepath 選項時,Delombok 不再會混淆來自不同檔案的註解。問題 #357
- 錯誤修正:將
@NotNull
視為指示 lombok 產生 null 檢查防護的註解,結果會導致各種問題。這已再次移除,並且文件已更新以反映這一點。問題 #360 - 錯誤修正:
@EqualsAndHashCode
或@Data
無法在非靜態內部類別上運作,而該內部類別的外部類別具有類型變數。現在可以了。問題 #362
v0.10.1 (2011年10月3日)
- 錯誤修正:eclipse 中的
@Delegate
可能會在 0.10.0 中導致記憶體洩漏。問題 #337 - 錯誤修正:列舉值上的註解正被 delombok 刪除。問題 #342
- 錯誤修正:
@AllArgsConstructor
錯誤地為已在其宣告中指派的 final 變數產生參數和指派。問題 #351 - 增強功能:
@NotNull
現在也被識別為註解,指示 lombok 應在產生的建構子和 setter 中產生 null 檢查防護。問題 #344
v0.10.0 "燃燒的鴯鶓" (2011年8月19日)
- 新註解:@Delegate。此註解可讓 lombok 為給定的欄位產生委派方法。更多資訊…
- 新增了對 'val' 的支援。Val 是一個不可變的變數,可從初始化運算式的右側推斷其類型。更多資訊…
- 透過
@Log
、@Slf4j
等註解新增了對多個記錄架構的支援。更多資訊… - Lombok 現在支援後編譯轉換器。問題 #217
- 新功能:使用
@SneakyThrows
不再需要對 lombok.jar 的執行時期相依性。實際上,對Lombok.sneakyThrows(ex)
的任何呼叫都在位元組碼層級進行了最佳化,不再需要您實際上在類別路徑上具有 lombok.jar 或 lombok-runtime.jar。 - 新功能:@XArgsConstructor、@Getter 和 @ToString 現在可以用於列舉宣告。先前,這些註解在列舉上的行為未定義。
- 新功能:v0.9.3 及更早版本中的 @Getter/@Setter(以及擴充的 @Data)會產生不符合 beanspec 的 getter 和 setter 方法名稱,主要是當面對布林屬性時。這已修正。除非您的屬性名為
isFoo
或hasFoo
,否則實際上這不會影響您。現在,為此產生的 setter 將被呼叫setFoo
(因為屬性名稱為foo
)而不是setIsFoo
。此外,hasFoo
現在不再特殊;名稱將為isHasFoo
和setHasFoo
。java bean 規範未給予has
特殊含義。 - 新功能:
@EqualsAndHashCode
(以及擴充的@Data
)現在新增了canEqual
方法,這提高了類別階層之間等式的一致性。更多資訊… - 新功能:
@Getter
現在支援lazy=true
屬性。更多資訊… - 增強功能:當 Eclipse 安裝位於包含單字 'eclipse' 的目錄的子目錄中時,安裝程式現在會找到這些安裝。問題 #283
- 增強功能:為
@Cleanup
新增 null 檢查 問題 #227 - 錯誤修正:Lombok 現在與 javac 7 相容。
- 錯誤修正:已修正在錯誤記錄中難以重現的
getTypeBinding
方法上的 EclipseNullPointerException
。問題 #237 - 錯誤修正:
@Setter
和@Getter
現在可以再次應用於靜態欄位(僅在 v0.9.3 中損壞)。問題 #209 - 錯誤修正:delombok 將類型參數新增至建構子,以鏡射類型的自身類型參數。這導致 delombok 將任何至少採用一個 'T' 類型參數的產生的建構子轉換為無法編譯的內容,並且啟動一個令人困惑的錯誤訊息('T 與 T 不相容')。現在已修正。問題 #213
- 錯誤修正:Eclipse 原始碼產生器會將產生的程式碼放置在類別之外 問題 #228
- 錯誤修正:當使用 m2eclipse 時,偶爾您會在 JavacProcessingEnvironment 上看到 ClassNotFoundError。這已修正。問題 #250
- 錯誤修正:將產生
equals
、hashCode
和canEqual
的全部或全部不產生。問題 #313 - 錯誤修正:輸出到目錄模式中的 Delombok 在 mac 和 linux 上產生非常長的路徑。問題 #322
- 錯誤修正:已修正在 eclipse 中的各種重構指令碼和儲存動作錯誤,但大多數錯誤仍然存在。
v0.9.3 "穴居鯨" (2010年7月25日)
- 新功能:現在可以合法地將
@Getter
或@Setter
新增至類別,並且就像將這些註解新增至其中的每個非靜態欄位一樣。問題 #202 - 新功能:新增了三個新註解,
@NoArgsConstructor
、@RequiredArgsConstructor
和@AllArgsConstructor
。這些註解剝離了@Data
產生建構子的能力,並且也允許您微調您想要的建構子類型。此外,透過使用這些註解,即使您有自己的建構子,也可以強制產生建構子。問題 #152 - 新功能:lombok 產生的建構子現在包含
@java.beans.ConstructorProperties
註解。這確實表示這些建構子在 java 1.5 中不再運作,因為這是 java 1.6 功能。可以透過在@RequiredArgsConstructor
或@AllArgsConstructor
註解中將suppressConstructorProperties
設定為true
來抑制此註解。問題 #195 - 新功能:產生的
toString
、equals
和hashCode
方法現在將使用this.getX()
和other.getX()
而不是this.x
和other.x
(如果合適的 getter 可用)。此行為對於 Proxy 類別(例如 hibernate 建立的 POJO)很有用。可以使用@ToString/@EqualsAndHashCode(doNotUseGetters = true)
抑制 getter 的使用。問題 #183 - 增強功能:FindBugs 的
@CheckForNull
現在會像@Nullable
一樣從欄位複製到 setter 的參數和 getter 方法。問題 #201 - 增強功能:外掛程式和
@SneakyThrows
:註解中類型的解析現在運作得更好,特別是對於不在核心 java 程式庫中的類別。問題 #161 - 增強功能:如果找不到
tools.jar
(執行 delombok 時需要),現在會產生有用的錯誤訊息。現在在JAVA_HOME
中也會搜尋tools.jar
。 - 增強功能:內部類別上的 toString() 現在會將類別名稱列為
Outer.Inner
,而不僅僅是Inner
。問題 #206 - 增強功能:lombok 產生的所有欄位存取現在都是限定的(如下所示:
this.fieldName
)。對於那些為非限定欄位存取設定警告的人來說,這些警告應該不再發生。問題 #121 - 增強功能:lombok 產生的所有欄位和方法現在都會附加
@SuppressWarnings("all")
,以避免遺失 javadoc 等警告,對於那些啟用該警告的人來說。問題 #120 - 平台:Lombok 現在應可在獨立 ecj (Eclipse Compiler for Java) 中執行。這不僅對少數實際上每天使用此編譯器的靈魂很有用,而且各種 eclipse 建置工具(例如 RCP 建置器)也在內部執行 ecj。問題 #145
- 錯誤修正:Eclipse:當您包含具有有界萬用字元泛型(例如
List<? extends Number>
)的欄位時,@Data
和其他註解現在不會拋出錯誤。問題 #157 - 錯誤修正:複雜的列舉未正確地 delombok。問題 #169
- 錯誤修正:delombok 現在不再忘記移除
import lombok.AccessLevel;
。在 netbeans 中,該匯入將不再被錯誤地標記為未使用。問題 #173 和 問題 #176 - 錯誤修正:雖然不鼓勵,但
import lombok.*;
應該在絕大多數情況下運作。然而,在 eclipse 中,它沒有運作。現在它可以了。問題 #175 - 錯誤修正:當
@Getter
或@Setter
應用於多個欄位宣告(例如@Getter int x, y;
)時,註解現在適用於所有欄位,而不僅僅是第一個欄位。問題 #127 - 錯誤修正:如果 delombok 包含
<?>
樣式的萬用字元在來源中的任何位置,以及至少 1 個 lombok 註解,則大多數 javacs 會以 NoSuchFieldError 退出。不再如此。問題 #207 - 建置:相依性現在透過 ivy 自動提取,並且大多數相依性現在預設包含來源,這對於那些處理 lombok 來源本身的人來說尤其方便。
v0.9.2 "冰雹兔" (2009年12月15日)
- 初步支援在 NetBeans 上使用 lombok!- 感謝來自 NetBeans 的 Jan Lahoda。問題 #93
- lombok 現在隨附 delombok 工具,該工具會將填滿來源的整個目錄複製到新目錄,並將任何 java 檔案 desugar 成沒有 lombok 轉換的外觀。在沒有 lombok 支援的情況下編譯此新目錄中的來源,應該會產生與使用 lombok 支援編譯原始來源相同的類別檔案。非常適合仔細檢查 lombok 在做什麼,以及將 delombok-ed 來源鏈結到基於來源的 java 工具,例如 Google Web Toolkit 或 javadoc。lombok.jar 本身也為 delombok 提供了一個 ant 工作。delombok 的完整文件。
- Lombok 現在可在 openjdk7 上運作(已使用 JDK7m5 測試)!對於所有處於領先地位的人來說,這應該是非常好的消息。問題 #134 - 感謝來自 NetBeans 的 Jan Lahoda。
- lombok 現在具有與其捆綁在一起的各種可從命令列存取的公用程式。執行
java -jar lombok.jar --help
以查看它們。包含(除了已提及的 delombok 之外) - 能夠建立一個名為 lombok-runtime.jar 的小型 jar,其中包含執行時期相依性。也可以列出對此 jar 具有執行時期相依性的 lombok 轉換。執行
java -jar lombok.jar createRuntime --help
以取得更多資訊。 - 可編寫指令碼的命令列安裝和解除安裝選項。執行
java -jar lombok.jar install --help
(或uninstall
,當然)以取得更多資訊。從技術上講,此支援已在早期版本中存在,但命令列選項現在更加寬鬆,更不用說更明顯了。 - Lombok 現在可在 Springsource Tool Suite 上運作。問題 #95
- Lombok 現在可在 JDK 1.6.0_0 上運作,適用於我們系統上安裝了非常舊的 JDK1.6 的人。問題 #156
- 在 Eclipse 中錯誤地使用 lombok(將其新增至專案作為註解處理器,這不是在 Eclipse 上使用 lombok 的方式)現在會產生有用的警告訊息,其中包含有用的資訊,而不是隱藏在記錄中的令人困惑的錯誤。問題 #126
- 已修正:迴歸錯誤,您偶爾會看到標題為「loader constraint violation: when resolving...」的錯誤,例如當開啟說明系統、啟動差異編輯器或很少開啟任何 java 原始碼檔案時。問題 #141
- 已修正:沒有任何參數的 @SneakyThrows 應預設為
Throwable.class
,但它在 javac 中沒有執行任何操作。問題 #146 - 已修正:在掃描現有方法時,現在會忽略大小寫,因此如果
setURL
已經存在,則在具有名為url
欄位的類別上使用@Data
註解將不再也產生setUrl
。問題 #148
v0.9.1 (2009年11月9日)
- 安裝程式現在在 linux 上運作得更好,因為它可以自動找到 linux 使用者傾向於放置其 eclipse 安裝的位置中的 eclipse,並且現在可以處理 apt-get 安裝的 eclipse,這在以前根本無法很好地運作。還有一個隱藏功能,安裝程式可以作為僅限命令列的工具運作 (
java -jar lombok.jar install eclipse path/to/eclipse
),這也當然支援uninstall
。您現在也可以指向eclipse.ini
,以防您有一個非常奇怪的 eclipse 安裝,這應該始終有效。 - 對於 lombok 開發人員來說,eclipse 啟動目標現在可以在 snow leopard 上開箱即用。問題 #139
v0.9.0 (2009年11月2日)
- lombok 類別修補系統已完全修改;修補類別檔案的核心業務已卸載到一個名為 'lombok.patcher' 的獨立專案中,現在用於將 lombok 修補到 eclipse 中。
- 許多幕後變更旨在提高 lombok 在 eclipse 上的穩定性和靈活性。
- 對 lombok 核心 API 的變更與 lombok v0.8 系列不向後相容,但這些變更對於讓為 lombok 撰寫第三方處理器變得更容易是必要的。
- 由於以上 3 個問題,次要版本號已升級。
- Eclipse 的「重新命名」重構指令碼(透過按下 CMD/CTRL+SHIFT+R 叫用)現在可在
@Data
註解的類別上運作。 - 如果您有未格式化的磁碟機,windows 安裝程式會在啟動時失敗。問題 #138
- 使用 javac 編譯時,
@Data
可以產生的靜態建構子,先前會被生成為 package private 權限。Issue #136
v0.8.5 (2009年9月3日)
- 現在
@Getter
和@Setter
注解可以使用AccessLevel.NONE
,以便在使用@Data
注解時,抑制 setter 和 getter 的生成。解決了 Issue #110 @EqualsAndHashCode
和@ToString
現在都支援透過新的 'of' 參數,明確指定要使用的欄位。以 '$' 開頭的欄位現在預設也會從 equals、hashCode 和 toString 的生成中排除,除非您在 'of' 參數中明確提及它們。解決了 Issue #105- javax.validation (以及更早版本的 hibernate,javax.validation 的起源) 中有一個常用的
@NotNull
注解,但它的意思與我們期望的略有不同:它不能用於參數上,並且在明確請求驗證後才在運行時檢查。作為一種變通方法,我們已從 lombok 生成的 Getters、Setters 和建構子的 nonnull 支援中,移除了對任何名為NotNull
的注解的檢查。Issue #116 - 又修正了一個關於
@SneakyThrows
的問題。雖然在 v0.8.4 中報告已修復,但它仍然沒有完全按照應有的方式運作。仍然屬於 Issue #103 的範疇
v0.8.4 (2009年9月2日)
- 修正了許多關於
@SneakyThrows
的問題 - 在之前的版本中,使用它有時會混淆語法著色,並且帶注解的方法中的各種結構會導致直接的 eclipse 錯誤,例如以 try 區塊開始方法。這也修正了 Issue #103 - 修正了 David Lynch 錯誤 - 在 eclipse 中,使用了 lombok 功能的類別有時會從其他原始碼檔案中消失。在 Issue #114 中有更詳細的描述。如果您曾受此問題困擾,您就會知道這是關於什麼。
- 修正了 eclipse 的幫助系統在 lombok 化的 eclipse 上無法啟動的問題。Issue #99
- 所有生成的方法現在都會將其參數(如果有的話)設為 final。這應該有助於避免 eclipse 中 'make all parameters final' 儲存動作的問題。Issue #113
- 好的,這次真的加入了對 @NonNull 和 @NotNull 注解的支援。雖然 v0.8.3 報告已加入支援,但實際上該版本中並沒有。@Nullable 注解現在也會複製到 getter 的返回類型以及 setter 和建構子的參數(但顯然,不會添加檢查)。任何未初始化的 @NonNull 注解的非 final 欄位,現在也會被 @Data 添加到生成的建構子中,以便通過顯式的 null 檢查來確保它們包含合法的值。
- @ToString (以及因此 @Data) 現在預設為 includeFieldNames=true。Issue #108
v0.8.3 (2009年8月21日)
- 當覆寫 java.lang.Object 以外的類別,但未將 EqualsAndHashCode 的 callSuper 設定為 true 時,@EqualsAndHashCode (以及間接的 @Data) 會產生警告。然而,有正當理由這樣做,因此如果您明確將 callSuper 設定為 false,則不再生成此警告。如果故意不呼叫 super,警告文字現在也會提及此操作。
- 如果您的欄位具有 @NonNull 或 @NotNull 注解,則生成的 setter 會以 null 檢查生成,並且注解會複製到 setter 的參數和 getter 的方法。
- 一個惱人的錯誤已被修正,該錯誤通常在您有 package-info.java 檔案時出現。它會導致在 lombok.javac.apt.Processor.toUnit(Processor.java:143) 處出現
NullPointerException
v0.8.2 (2009年7月29日)
- 創建了 @EqualsAndHashCode 和 @ToString;這些是 @Data 功能的子集 (即:生成 toString(),以及生成 equals() 和 hashCode() 實作)。@Data 仍然會生成這些方法,但現在您可以根據需要單獨生成它們。作為這次拆分的一部分,您現在可以指定 toString 生成在產生的 toString 方法中包含欄位名稱,並且對於所有 3 種方法:您可以選擇包含父類別的實作,並且您可以選擇排除某些欄位。Issue #81
- 當使用 javac 編譯時:關於注解參數特定條目的警告 (例如 @EqualsAndHashCode exclude 參數中不存在的欄位) 現在會顯示在有問題的參數上,而不是整個注解上。Issue #84
v0.8.1 (2009年7月26日)
- 從此版本開始追蹤變更日誌。
- 在 @Data 注解上使用 eclipse 的 'find callers' 現在將找到靜態建構子的呼叫者 (如果您生成了它)。如果沒有,它仍然像以前一樣找到 hashCode() 的呼叫者 (雖然無法讓 eclipse 找到普通建構子的呼叫者,但您可以直接在類別名稱上使用 'find callers',效果很好)。Issue #78
- 如果您的欄位名為 'hasFoo' 且為布林值,並且您使用 @Getter 或 @Data 為其生成 getter,則該 getter 現在將被稱為 'hasFoo' 而不是像以前那樣的 'isHasFoo'。此規則適用於任何以 'has'、'is' 或 'get' 為前綴的欄位,並且前綴後面的字元不是小寫 (這樣 'hashCodeGenerated' 就不會被錯誤地識別為已經有前綴!)。已添加類似的邏輯,如果已經有一個名為 'isFoo' 的方法,則完全不為名為 'foo' 或 'hasFoo' 的欄位生成 getter。Issue #77
- 在 mac os X 上使用 soylatte 而不是 apple 的 JVM 啟動 lombok 安裝程式,現在可以正確檢測到是在 mac 上,並使用 mac 專用程式碼來尋找和安裝 eclipses。Issue #80
- 對於非 mac、非 windows 的安裝,
-javaagent
參數中的 jar 檔案現在以絕對路徑寫入eclipse.ini
,而不是相對路徑。由於某些原因,在至少 1 個 linux 安裝上,需要絕對路徑才能使 javaagent 工作。這個 '修復' 有一個不幸的副作用,即在不破壞指向 lombok java agent 的指標的情況下,無法移動您的 eclipse 安裝,因此此變更僅針對非 windows、非 mac 引入。感謝 WouterS 發現了這個問題,並幫助我們進行了一些關於修復它的研究。Issue #79
v0.8
- 公告前的初始版本
- (注意:目前有幾個不同的 lombok 版本,都標記為 v0.8。)