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
原语。感谢 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 功能在外部类型中包含的记录上无法正常工作。问题 #3497 问题 #3559。 - 错误修复: 使用
com.pro-crafting.tools:jasperreports-plugin
的 Eclipse 项目现在可以编译了。 - 错误修复:
@FieldNameConstants
现在在涉及生成的字段时也能正常工作。问题 #3529。 - 不太可能造成破坏性更改: 对于 JSpecify,包名从
org.jspecify.nullness
更改为org.jspecify.annotations
,这可能会导致不同的 null 分析。问题 #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。 - 错误修复: 在
record
中生成方法时,Lombok 没有正确复制它应该复制的注释。问题 #3315。 - 错误修复: Delombok 任何带有
@lombok.Singular
的东西都不会删除该注释。问题 #1377。 - 错误修复: 调用扩展方法,以便应用自动加宽(即使用
int
调用void ext(long arg)
)将在运行时失败。问题 #3463。 - 错误修复: 扩展方法现在可以在记录中使用。问题 #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。 - 错误修复: 记录上的原始数组字段上的
@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 拉取请求 #2996。感谢 @YonathanSherwin! - 功能: 您现在可以使用
@Accessors(makeFinal = true)
来创建final
getter、setter 和 with-er。问题 #1456。 - 错误修复: Eclipse 中的各种保存操作和重构脚本效果更好。问题 #2995 问题 #1309 问题 #2985 问题 #2509。
- 错误修复: 使用 jasperreports-plugin 的 Eclipse 项目现在可以编译了。问题 #1036。
- 错误修复:
@UtilityClass
类中的内部类在 JDK9+ 中被破坏。问题 #3097。 - 错误修复: 使用
@Builder.Default
delomboking 代码会生成与 lombok 本身不同的代码。问题 #3053。 - 错误修复: 组合
@NonNullByDefault
和lombok.addNullAnnotations
会生成两个@Nullable
注释,从而生成编译器错误。问题 #3120。感谢 @JohnPaulTaylorII! - 错误修复: Eclipse 中的空值分析在增量构建中被破坏。问题 #3133。
- 错误修复
VerifyError
会在使用各种重构脚本的最新 eclipse 版本中显示出来。问题 #3134。 - 错误修复: 各种
@Log
注释现在可以放在内部枚举和记录上。问题 #2990。 - 安全: 广泛报道的 log4j2 安全问题 (CVE-2021-44228) 对 lombok 本身或 lombok 本身的使用,甚至 lombok 的
@Log4j2
的使用都绝对没有影响,不会造成任何问题:您必须在您的应用程序中发布您自己的 log4j2 依赖项 - 将其更新到 2.17 或以其他方式缓解此问题(请参阅 CVE 页面)。为了避免来自依赖项检查器的不必要的警告,我们对 log4j2 的依赖项仅用于测试,不由我们发布,并且无法以任何方式利用,已更新到 2.17.1。问题 #3063 - 不太可能造成破坏性更改: Lombok 现在理解更多暗示“此字段绝不应包含空引用”的注释。因此,Lombok 将复制其中一些新注释,例如复制到生成的 getter 等。拉取请求 #2904
v1.18.22 (2021年10月6日)
- 平台: 增加了 JDK17 支持。问题 #2898。
- 功能: 添加了
@StandardException
功能。拉取请求 #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
注释记录组件,以便让 lombok 向您的紧凑构造函数添加空值检查(如果需要,将创建该构造函数)。 - 错误修复: 尝试使用 lambda 表达式作为
@ExtensionMethod
的参数不起作用。问题 #2741。(由 @Rawi01)。 - 错误修复: 带有现有构造函数的
@SuperBuilder
在 eclipse 中引起了问题。问题 #2704。(由 @JanRieke)。 - 错误修复: 将
@SuperBuilder
与手写构建器类一起使用会导致问题。问题 #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) 编译模块的问题。
- 不太可能造成破坏性更改: 对于包含原始字段和引用字段的类,生成的哈希码已更改。
- 功能: 与
@Builder
类似,您现在可以通过例如@SuperBuilder(setterPrefix = "set")
配置@SuperBuilder
的“setter”前缀。我们仍然不鼓励这样做。拉取请求 #2357。 - 功能: 如果使用
@Synchronized("lockVar")
,如果lockVar
引用的是静态字段,则 lombok 生成的代码不再会引起关于不正确访问静态实体的警告。问题 #678 - 功能:
@Builder
或@SuperBuilder
上的@Jacksonized
将配置 Jackson 在反序列化时使用此构建器。拉取请求 #2387 感谢 @JanRieke。@Jacksonized 文档。 - 功能: checkerframework 支持已更新;相关的注释在 checkerframework 的 API 中被重命名,lombok 现在根据其当前的 API 名称生成注释。
- 功能: 添加选项以通过
@EqualsAndHashCode(cacheStrategy = EqualsAndHashCode.CacheStrategy.LAZY)
缓存 hashCode。问题 #784 拉取请求 #2513 感谢 @andrebrait。 - 平台: 增加了对使用 OpenJ9 编译项目的支持。拉取请求 #2437
- 平台: 改进了对最新 JVM/javac 版本(14 和 15)和新语言特性的支持。
- 性能: 提高了在解析/编译期间的性能,包括使用 javac 和 Eclipse。感谢 @Rawi01!
- 性能: 生成的 equals 方法将首先比较原始类型,然后比较原始类型包装器,然后比较引用字段。可以使用
@Include(rank=n)
手动重新排序。拉取请求 #2485, 问题 #1543 - 错误修复: Delombok 打印第一个
this
参数。问题 #2444 - 错误修复: 将
val
与其泛型包含引用自身的通配符的值结合使用会导致 javac 中的StackOverflowError
。问题 #2358。 - 错误修复: 在具有一些相当复杂的泛型用法的类上使用
@SuperBuilder
会因“类型参数数量错误”而失败。问题 #2359 拉取请求 #2362 - 错误修复: 枚举或接口中嵌套的类上的各种 lombok 注释会在 eclipse 中引起错误。问题 #2369
- 错误修复: 尝试添加正好带有 2 个参数的
@ExtensionMethod
会在 eclipse 中失败。问题 #1441 拉取请求 #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")
配置构建器的“setter”前缀。我们不鼓励这样做,但如果您使用的某些库需要它们,请随意使用。拉取请求 #2174, 问题 #1805。 - 功能: 如果您使用
@Builder
的@Singular
,还会生成一个复数形式,其效果是添加传递的集合中的所有元素。如果您传递一个空引用,这将导致无消息的NullPointerException
。现在,它会导致该异常,但附加了有用的消息(使用与@NonNull
相同的配置),或者,通过@Singular
上的参数,您可以选择忽略此类调用(不添加任何内容,立即返回);这在反序列化(例如 Jackson JSON)和 JPA/Hibernate 代码时非常有用。问题 #2221。 singular 文档。 - 功能: 厌倦了无法使用
@javax.annotation.ParametersAreNonnullByDefault
或@org.eclipse.jdt.annotation.NonNullByDefault
,因为这样 lombok 生成的 equals 方法无效?别再烦恼了;lombok 现在可以在相关位置添加空值注释。在您的lombok.config
中设置您喜欢的空值注释风格。适用于toString
、withX
、可链接的setX
、静态构造函数、build
、builder
等的返回值,以及equals
、canEqual
的参数以及构建器类的@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
配置键来配置自定义日志记录框架。有关更多信息,请参阅 日志文档。拉取请求 #2086 感谢 Adam Juraszek。 - 增强: 感谢 Mark Haynes,如果已存在(私有)构造函数,现在也会生成
staticConstructor
。问题 #2100 - 增强:
val
现在能够解码复杂表达式的类型(特别是如果右手边涉及 lambda 和条件(三元)表达式)。拉取请求 #2109 感谢 Alexander Bulgakov。 - 增强: 您现在可以使用键
lombok.builder.className
通过配置系统配置生成的构建器类名称。请参阅 Builder 文档 和 SuperBuilder 文档 - 增强: 如果您混淆了 eclipse 的非空支持(例如
@NonNullByDefault
)和 lombok 的@NonNull
,您会收到一堆关于不适当的死代码的警告。由于 Till Brychcy 的贡献,现在已禁止显示这些警告!拉取请求 #2155 - 增强:
@NonNull
现在还可以使用 jdk 的Objects.requireNonNull
或 Guava 的Preconditions.checkNotNull
生成检查。问题 #1197 - 实验: Lombok 正在与 checkerframework 合作,以启用检测不正确的构建器使用(例如忘记在调用
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
构建器条目会产生一连串错误对话框。问题 #2169 - 错误修复: 如果 package-info.java 不包含包声明,则 Javac 会抛出 NullPointerException。问题 #2184
- 错误修复: Javac 在构造函数、getter 和 setter 上设置了不正确的带注释的类型。问题 #2189
- 不太可能造成破坏性更改: 更严格地验证处理标识符和类型的配置键(
lombok.log.fieldName
、lombok.fieldNameConstants.innerTypeName
、lombok.copyableAnnotations
)。 - 不太可能造成破坏性更改: 为具有默认值的字段(在带有
@Default
标记的字段的类上使用@Builder
)在构建器内部生成的字段现在以$value
作为名称;不建议直接操作这些字段,因为还有一个相关的$set
变量也需要考虑在内。问题 #2115
v1.18.8 (2019年5月7日)
- 功能: 您现在可以使用
lombok.config
选项配置@FieldNameConstants
以CONSTANT_CASE
生成的常量。请参阅 FieldNameConstants 文档。问题 #2092。 - 功能: 您现在可以抑制在使用
@Builder
时生成builder
方法;通常是因为您只对toBuilder
方法感兴趣。为了方便起见,当您这样做时,我们不会发出关于缺少@Builder.Default
注释的警告。问题 #2046 - 功能: 您现在可以更改生成的构建器类的访问修饰符。问题 #2083。
- 功能: 当使用
@NonNull
或任何其他会导致空值检查的注释时,您可以配置为生成 assert 语句。问题 #2078。 - 功能: Lombok 现在确切地知道如何处理
@com.fasterxml.jackson.annotation.JsonProperty
,并将其复制到正确的位置,例如在制作构建器时。问题 #1961 问题 #1981 - 平台: 一些 lombok 功能(最值得注意的是 delombok)在 JDK12 上失败。问题 #2082
- 错误修复: var/val 在返回交集类型的方法上现在可以在 Eclipse 中工作。问题 #1986
- 错误修复: 修复了如果字段有 javadoc 的 java6 回归。问题 #2066
- 错误修复: Delombok 现在将 delombok java10 自己的
var
作为var
而不是实际的底层类型。问题 #2049 - 错误修复: 如果您使用
@Builder
并手动在您的构建器类中编写build()
方法,则 javac 会报错而不是遵循您的实现。问题 #2050 问题 #2061 - 错误修复:
@SuperBuilder
与非列表上的@Singular
一起使用会产生错误的emptyList
调用。问题 #2104。 - 不太可能造成破坏性更改: 对于标记为非空的字段和参数,如果方法体以 assert 语句开头以确保值不为空,则不会生成用于抛出异常的代码。
- 不太可能造成破坏性更改: 当使用
ecj
编译包含@Builder
或@SuperBuilder
的 java 代码,并且为@NonNull
标记的方法生成构建器 setter 方法时,将不会存在显式的空值检查。但是,在完全相同的文件上运行javac
会生成空值检查。现在 ecj 也生成此空值检查。问题 #2120。 - 不太可能造成破坏性更改: 我们稍微更改了 lombok 生成的异常消息,以处理
@NonNull
标记的参数。问题 #2122
v1.18.6 (2019年2月12日)
- 功能: 字段上的 Javadoc 现在也将复制到构建器的 setter。感谢 Emil Lundberg 的贡献。问题 #2008
- 功能:
@FieldNameConstants
功能现在允许您手动编写内部类型并向其中添加任何内容;lombok 会将常量添加到此类中。请参阅更新后的 FieldNameConstants 功能 页面。 - 功能: 现在有一个
lombok.config
键来配置@ToString
的调用超类行为;它就像@EqualsAndHashCode
一样,已经有一段时间了。问题 #1918 - 增强: 枚举的 toString 生成现在包含枚举常量的名称。问题 #1916
- 平台: 由于 JDK12 中 switch 语句的更改,lombok 无法与 JDK12 预览版一起使用。问题 #1888
- 错误修复:在 jdk8 中,同时使用
@Delegate
和@NonNull
会导致错误。 Issue #1935 - 错误修复:在 Eclipse 中使用新的
@FieldNameConstants
会在错误日志视图中导致错误,并且如果启用了保存操作,则会弹出错误提示。 Issue #2024 - 错误修复:自 1.18.4 版本以来,delombok ant 任务无法正常工作,并报错
NoClassDefFoundError
。 Issue #1932 - 错误修复:在同一字段上同时使用
@Setter
和@Wither
,当该字段的 javadoc 中包含--setter--
部分或@param
标签时,会导致竞争条件,其中第一个访问该字段的处理程序将获取 javadoc 的该部分。 这是修复 Issue #1033 的一个步骤 - 错误修复:强制执行新一轮编译时,编译多模块项目会失败。 Issue #1723, Issue #1858, Issue #1946, Issue #2028
v1.18.4 (2018 年 10 月 30 日)
- 平台:支持 Eclipse Photon。 Issue #1831
- 平台:安装程序现在可以识别 Angular IDE Issue #1830
- 平台:lombok 对 JDK10/11 支持的许多改进。
- 重大变更:
@FieldNameConstants
功能已完全重新设计。 Issue #1774 FieldNameConstants 文档 - 重大变更:Lombok 现在将始终复制特定的注解(从字段到 getter,从字段到 builder 'setter' 等):已知注解的特定精选列表,在这些情况下这样做是正确的(通常是来自各种库的
@NonNull
风格的注解),以及您在lombok.config
文件中的lombok.copyableAnnotations
配置键中显式列出的任何注解。 此外,lombok 在复制这些注解方面更加一致。(之前的行为:Lombok 过去会复制任何简单名称为NonNull
、Nullable
或CheckForNull
的注解)。 Issue #1570 和 Issue #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
以从文本文件中读取 args;如果您需要传递给 delombok 的 classpath 非常长,这将非常有用。 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 的“组织导入”功能(显式调用,或通过“保存操作”在保存时自动触发)会删除
lombok.var
的导入。 Issue #1783 - 错误修复:Lombok 和 gradle v4.9 无法一起工作; 这已被修复。 Issue #1716 和 gradle-apt-plugin issue #87
- 特性:现在可以使用新的(实验性)
@SuperBuilder
注解为类型层次结构创建 builders。 感谢 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 - 错误修复:如果生成私有无参数构造函数会破坏代码,则不要生成它。 Issue #1703, Issue #1704, Issue #1712
- 错误修复:在 lombok 注解中使用布尔参数会失败。 Issue #1709
- 错误修复:Delombok 会给出错误消息。 Issue #1705
- 错误修复:如果在您的 eclipse 中安装了 lombok,则 Eclipse java10 var 支持不起作用。 Issue #1676
- 特性:Google 的 Flogger (又名 FluentLogger) 现在可以通过
@Flogger
使用。 Issue #1697 - 特性:
@FieldNameConstants
已扩展为支持前缀和后缀。 默认情况下,生成的常量以FIELD_
为前缀。 关于 @FieldNameConstants 的文档。
v1.16.22 "Envious Ferret" (2018 年 5 月 29 日)
- 特性:用于
@Data
和@Value
的私有无参数构造函数,以使反序列化框架(如 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 中导致错误“保存参与者引起问题”的一些问题。 Issue #879
- 错误修复:jdk9 上的 Netbeans。 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 尚无法进行 delomboking)。 请注意,您需要进行一些命令行操作。 请参阅 Issue #985
- 错误修复:如果您添加的注解包含命名参数,并且您正在使用 JDK8 的 javac 进行编译,则
onX
功能(允许您向生成的方法添加注解)不起作用。 我们无法修复此问题(这是 javac 中的一个错误),但我们提供了一种替代的、更漂亮的方式在 javac8+ 上执行onX
。 Issue #778 onX 文档 - 错误修复:在生成 equals、hashCode 和 toString 时,
@Data
和@Value
现在遵循字段访问的配置。 Issue #1329 - 错误修复:如果源字段已弃用,则
@Builder
现在将生成的 builder 'setters' 标记为@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 也为此字段生成了 getters 和/或 setters 时,重构脚本“重命名字段”现在更好了 Issue #210
- 错误修复:您永远不会遇到的问题。 Issue #1274
- 弃用:配置键
lombok.addGeneratedAnnotation
现已弃用,请改用lombok.addJavaxGeneratedAnnotation
。
v1.16.12 (2016 年 12 月 5 日)
- 特性:
var
是val
的可变姐妹。 目前是实验性的,并使用 flagUsage 配置键中的ALLOW
选择启用。 感谢 Bulgakov Alexander 的贡献。 - 变更:
@Value
和@FieldDefaults
不再触及静态字段 Issue #1254 - 错误修复:lambda 表达式中的
val
现在可以按预期工作 Issue #911 - 错误修复:
Getter(lazy=true)
现在在 transient 字段上使用时会发出错误消息 Issue #1236 - 错误修复:内部使用 ecj (dagger) 的注解处理器不再给出链接错误 Issue #1218
- 平台:Red Hat JBoss Developer Studio 现在可以被安装程序正确识别 Issue #1164
- 错误修复:delombok:具有非局部变量初始化器的 for 循环将生成不正确 Issue #1076
v1.16.10 (2016 年 7 月 15 日)
- 特性:添加了对 JBoss logger 的支持 Issue #1103
- 增强:运行
javac -Xlint:all
会生成关于未声明注解的警告 Issue #1117 - 错误修复:在使用
@Delegate
时,Eclipse Mars 有时会抛出 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
不再使未初始化的静态字段为 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)
创建无参数构造函数。 - 错误修复:带有
@Builder
的参数化静态方法会在 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 可能会导致未初始化的静态变量。 Issue #839
- 错误修复:此版本的 lombok 具有重构的启动器(v1.16.0 中引入的那个),它修复了与 eclipse 中关于加载类、找不到 lombok 类以及 ClassLoaders 错误相关的各种错误。 可能会影响问题 Issue #767 和 Issue #826。
v1.16.2 (2015 年 2 月 10 日)
- 特性:配置键
lombok.extern.findbugs.addSuppressFBWarnings
现在可用于向 lombok 生成的所有代码添加 findbugs 抑制警告注解。 这解决了功能请求 Issue #737。 - 特性:新的 lombok 注解:
@UtilityClass
,用于创建实用程序类(不可实例化,仅包含静态“函数”方法)。 有关更多信息,请参阅 功能文档。 - 错误修复:从 v1.16.0 开始,ant
delombok
任务已损坏。 请注意,任务定义类已更改; taskdeflombok.delombok.ant.Tasks$Delombok
而不是旧的lombok.delombok.ant.DelombokTask
。 Issue #810。 - 错误修复:如果在内部类中使用,javac 中的
val
偶尔会失败。 这已(可能)修复。 Issue #729 和 Issue #616。 - 错误修复:从 v1.16.0 开始,如果 lombok 位于路径中包含空格的位置,则 lombok 将无法作为可执行 jar 运行。 Issue #812。
- 错误修复:v1.16.0 在旧版本的 eclipse 中不起作用(例如 eclipse indigo)。 Issue #818。
v1.16.0 "Candid Duck" (2015 年 1 月 26 日)
- 错误修复:使用 java 8 时,
@ExtensionMethod
在 Eclipse 中已损坏。 Issue #777, Issue #782 - 错误修复:delombok:在您的源文件中使用特殊字符会过度使用反斜杠-u 转义它们。 现在,假设您选择的编码可以支持所有字符,则所有字符都将以未转义的形式打印。 否则,它们将被转义。 Issue #794
- 晋升:
@Builder
已从实验性包升级到主包,并进行了一些更改(添加了@Singular
,删除了fluent
和chain
选项)。 旧的仍然存在并且已被弃用。 - 特性:
@Builder
现在支持向表示集合的任何字段/参数添加@Singular
注解,这会在生成的 builder 中生成一个方法,该方法接受该集合的一个元素并将其添加进去。 Lombok 负责生成适当的代码以生成相应类型的压缩不可变版本。 在此版本中,支持 java.util 集合和 guava 的 ImmutableCollections。 有关更多信息,请参阅 功能文档。 - 特性:在 lombok 启动过程中添加了一个启动器,该启动器消除了在您的
eclipse.ini
文件中添加-Xbootclasspath
的需要,并从 lombok jar 中删除了所有非公共 API 和第三方依赖项(例如 ASM),从而将它们从任何使用 lombok 的项目中的 IDE 自动完成建议中删除。 对于那些调试 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 中的语法高亮会变得奇怪,并且自动完成可能会停止工作,以及其他 eclipse 功能(从 v1.12.6 回归)。 Issue #723
- 特性:添加了
@Tolerate
; 将此注解放在任何方法或构造函数上,lombok 在考虑是否生成方法或构造函数时会跳过它。 如果您的方法的参数类型与 lombok 将生成的类型不冲突,这将非常有用。 - 特性:添加了配置键
lombok.getter.noIsPrefix
,它允许您禁用isFoo()
的使用和生成,而是使用getFoo()
来处理 {@code boolean} 字段。 - 错误修复:eclipse 日志中出现
ASTConverter.convertType
中的IndexOutOfBound: 2
错误。 Issue #721 - 正在进行中的错误修复:eclipse 中尚未知的条件会导致日志中出现大量
IllegalArgumentException
,消息为“Path must include project and resource name”。 此外,当使用 Jazz 等外来的文件系统抽象时,可能会发生“invalid URL”或“URI not absolute”错误。 这些错误尚未修复,但不会发生灾难性故障,而是会发出警告日志。 Issue #717 - 错误修复:mvn 构建失败,并出现“URI not absolute”异常。 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。
- 错误修复:在使用惰性 getter 时,eclipse 中偶尔会发生死锁 Issue #625
- 错误修复:将 JDK8 中的 javac 与
-target 1.8
一起使用@SneakyThrows
会导致后编译器错误。 Issue #690 - 错误修复:在某些版本的 eclipse 上切换工作区会导致“重复字段”错误。 Issue #701
v1.12.6 (2014 年 3 月 6 日)
- 错误修复:在项目构建期间,尤其是在使用 gradle 插件时,eclipse 中偶尔会发生死锁。 Issue #680
- 平台:添加了对 Eclipse Luna 的支持。 Issue #644
- 平台:针对 kepler 中 eclipse 的 alpha 支持的初始 JDK8 支持。 Issue #632
- 特性:各种
@Log
注解现在支持topic
参数,该参数设置记录器的名称。 默认值仍然是类本身的完全限定类型名称。 Issue #667。 - 缺陷修复:在 IntelliJ 和 IBM JDK 中使用 lombok 会导致初始化期间出现 NPE。Issue #683。
- 缺陷修复:Eclipse 快速修复使用 try/catch 块包围在
@SneakyThrows
注解的方法内不起作用 Issue #511。 - 缺陷修复:Eclipse 重构提取本地变量在
@SneakyThrows
注解的方法内不起作用 Issue #668。 - 缺陷修复:{Netbeans} @SneakyThrows 会导致未使用的导入并破坏重构 Issue #544。
- 缺陷修复:Eclipse 整理导入会生成错误:AST 不可为空 Issue #666。
- 缺陷修复:将 javadoc 复制到 getter / setter / wither 时,也会复制不相关的部分。Issue #620。
- 增强功能:Lombok 过去会附带 JNA。它使 lombok.jar 的大小增加了超过 800k,并可能干扰您本地环境(尤其是在 eclipse 中)中 JNA 的使用。Issue #682
- 详细信息:{Delombok} 在枚举主体内部,delombok 格式化程序不遵守 emptyLines 指令 Issue #664。
- 详细信息:使用较小的质数(<127)来生成哈希码 Issue #660
v1.12.4(2014 年 1 月 15 日)
- 缺陷修复:v1.12.2 的 delombok 将所有运算符+赋值都变为仅赋值。已修复。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
会得到适当的处理。解决了功能请求 Issue #132。@Getter 和 @Setter 文档。@Wither 文档。 - 变更:@Getter(lazy=true) 的脱糖现在减少了对象创建的密集程度。文档已更新以反映新的脱糖外观。@Getter(lazy=true) 文档。
- 晋升:
@Value
已从实验性提升到主包,没有任何更改。“旧”的实验性版本仍然存在,但已弃用,并且是新主包版本的别名。@Value 文档。 - 功能:{实验性}
@Builder
支持。我们最早的功能请求问题之一,Issue #89,终于得到了解决。@Builder 文档。 - 功能:方法或构造函数参数上的
@NonNull
现在会在方法开头生成一个空值检查语句。此空值检查将抛出一个NullPointerException
,并将参数名称作为消息。Issue #549 - 缺陷修复:使用
Lombok.sneakyThrow()
或@SneakyThrows
有时会导致无效的类(类在VerifyError
中失败)。Issue #543 - 缺陷修复:在 try-with-resources 中使用
val
对于 javac 无效。Issue #555 - 缺陷修复:当使用
@Data
时,如果某些方面未生成,因为您编写了它们的显式版本,则不会生成警告。但是,这在equals
/hashCode
/canEqual
中变得令人困惑,因为如果存在这些方法中的任何一个,则不会生成任何内容。现在,如果存在equals
或hashCode
中的一个但不存在另一个(或者存在canEqual
但缺少equals
和/或hashCode
),则会发出警告以解释 lombok 不会生成任何 equals / hashCode 方法,并且您应该自己编写所有方法或删除所有方法。Issue #548 - 缺陷修复:可能修复了 patcher 中的竞争条件 Issue #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 的支持 Issue #505 - 增强功能:Lombok 安装程序现在可以查找 lombok 并将其安装到 JBoss Developer Studio 中。安装程序现在还将在您的主目录中查找 eclipse 和 eclipse 变体。Issue #507
- 缺陷修复:如果扩展方法在表达式(即方法调用,且其返回类型是类型变量)上调用,则
@ExtensionMethods
不再导致运行 eclipse 编译的代码时出现VerifyError
异常。例如,someList.get(i).extensionMethod()
会以这种方式失败。Issue #509 - 缺陷修复:java 7 的 try-with-resources 语句无法正确 delombok。Issue #532
v0.11.6(2012 年 10 月 30 日)
- 功能:可以通过使用 JVM 开关
-Dlombok.disable
为任何给定的编译运行完全禁用 Lombok。这对于代码样式检查器等可能很有用。 - 功能:添加了对 Slf4j 扩展日志记录器的支持 Issue #494
- 缺陷修复:{Delombok} 自 0.11.0 以来,运行 delombok 在与 javac 1.7 一起使用时一直导致 VerifyError 错误。Issue #495
- 缺陷修复:lombok 和某些 eclipse 插件之间的冲突会导致在使用
@Delegate
时日志中出现 NullPointerExceptions。 - 缺陷修复:在 javac 中使用
@ExtensionMethod
编译且涉及生成的构造函数时,出现lombok.​javac.​handlers.​JavacHandlerUtil.​upToTypeNode​(JavacHandlerUtil.java:978)
中的NullPointerException
。Issue #496 - 缺陷修复:在 eclipse 中,字段上使用
@Deprecated
并获取生成的 setter 会导致IllegalArgumentException
,除非您打开错误日志,否则您看不到此异常。如果您定义了保存操作,您将看到一个包含异常的弹出框。现在已修复。Issue #481
v0.11.4(2012 年 8 月 13 日)
- 功能:{实验性}
@Value
、@Wither
和@FieldDefaults
现在可用。这些与@Data
非常相似,但面向不可变类。关于 @Value 的文档,关于 @Wither 的文档 以及 关于 @FieldDefaults 的文档。 - 缺陷修复:如果使用
@ExtensionMethod
,Eclipse 会抛出 OOME。Issue #463 - 缺陷修复:{Netbeans}
@Cleanup
和@Synchronized
在 netbeans 编辑器中导致的问题少得多。Issue #466 - 缺陷修复:{安装程序} 修复了关于安装程序在从 eclipse 安装中安装或删除 lombok 时抱怨需要 root 访问权限的错误消息。此问题的安装程序边缘实际上已在 v0.11.2 中修复。Issue #436
- 缺陷修复:
@ExtensionMethod
在 javac 中存在各种问题。Issue #472 - 缺陷修复:当您具有带有泛型的字段(即
Class<T>
)时,使用 javac 生成静态构造函数会导致错误。Issue #469 - 缺陷修复:eclipse 中
@ExtensionMethod
的小问题,例如在super
引用上调用扩展方法的能力,现在已不再可能。Issue #479
v0.11.2 “潇洒的卡卡波鹦鹉”(2012 年 7 月 3 日)
- 功能:{实验性}
@ExtensionMethod
现在可用,可以以静态方法的形式为任何类型添加扩展,该静态方法将该类型的对象作为第一个参数。关于 @ExtensionMethod 的文档 - 功能:正在进行中:修复将 lombok 与 gwt-designer 一起使用的问题。
- 增强功能:
equals
和hashCode
中的小性能增强。Issue #439 - 缺陷修复:Eclipse 会在错误的位置显示有关无效的超类构造函数的错误消息。Issue #409
- 缺陷修复:Eclipse 重构脚本“重命名方法参数”应该更频繁地与受 lombok 影响的方法一起使用。
- 缺陷修复:如果可迭代对象是原始类型,则在增强的 for 循环中使用
val
无效。 - 缺陷修复:当数据类型为 boolean、int、array 或某些其他需要特殊处理 hashCode/equals 的类型时,使用
@Getter(lazy=true)
现在可以与@Data
、@EqualsHashCode
和@ToString
正确配合使用。Issue #449 - 缺陷修复:构造函数中的
SneakyThrows
不应将 this/super 调用包装在 try 块中 Issue #454 - 缺陷修复:无法在第一个生成的方法之上的代码上设置断点。Issue #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 的结果。Issue #401 - 功能:现在可以通过运行
java -jar lombok.jar publicApi
并将生成的 jar 包含在您的项目中,在 eclipse 上开发 android 应用程序时使用 lombok。关于使用 lombok 进行 android 开发的文档。 - 缺陷修复:在 NetBeans 中,即使 Lombok 也生成了构造函数,仍然会生成默认构造函数。Issue #399
- 缺陷修复:某些包含 @SneakyThrows 的类无法编译(抛出 ClassFormatError)。Issue #412
- 缺陷修复:delombok:当
@Delegate
将生成一个类型参数类型为T extends package.Class
的方法时,会在类型名称前加上一个点。Issue #414 - 缺陷修复:@Getter 和 @Setter 现在为已弃用的字段生成已弃用的方法。修复了 Issue #415
- 缺陷修复:@Delegate 不会在 javadoc 中标记为已弃用的方法上生成 @Deprecated。修复了 Issue #421
- 缺陷修复:现在可以使用类型为
Outer<TypeArgs>.Inner
的val
。Issue #416 - 缺陷修复:变量类型为原始类型且初始化表达式是不同原始类型(会隐式类型强制转换,即 int 可以分配给 long 而无需强制转换)的
@Getter(lazy=true)
以前不起作用。Issue #418 - 缺陷修复:
val
在基本 for 循环(旧类型,而不是 foreach 类型)内不再合法。这些变量很少应该是 final,而且实际上无法正确地 delombok 此代码。Issue #419 - 缺陷修复:PrettyCommentsPrinter 现在打印注解方法的默认子句。修复了 Issue #423
v0.10.8(2012 年 1 月 19 日)
- 功能:
@Delegate
现在可以用于无参数方法,其工作方式类似于将其添加到字段。请参阅 文档。 - 缺陷修复:当使用 lombok 注解生成方法时,Eclipse 重构提取接口已损坏。Issue #159
- 缺陷修复:当使用 lombok 注解生成方法或字段时,Eclipse 操作排序成员已损坏。Issue #338
- 缺陷修复:当使用 lombok 注解时,Eclipse 操作重构/重命名内部类型已损坏。Issue #389
- 缺陷修复:0.10.6 在使用 ecj(因此,play framework,gwt 等)时导致 ClassNotFoundErrors。Issue #393
- 缺陷修复:当使用带括号的 lombok 注解时,Eclipse 解析已损坏。Issue #398
- 增强功能:Lombok 现在在 Eclipse 关于对话框中添加了一行关于自身的信息。
v0.10.6(2011 年 12 月 19 日)
- 性能:已修复在 netbeans 中使用 lombok 时引入的 0.10 中的性能问题(内存泄漏)。Issue #315
- 缺陷修复:Eclipse 快速修复“添加未实现的方法”有时会将新的方法存根插入到奇怪的位置,尤其是在存在
@Data
的情况下。Issue #124 - 缺陷修复:如果存在
@Data
,Eclipse 快速修复“将参数分配给新字段”会将其插入到类体外部。Issue #295 - 缺陷修复:使用 Alt+Shift+R 在 eclipse 中重命名 @Data 注解的类不再损坏数据注解。Issue #359
- 缺陷修复:在某些情况下,保存操作“仅在必要时对字段访问使用此限定符”与
@Data
一起使用时不起作用。Issue #374 - 缺陷修复:手动运行或作为保存操作运行的整理导入会抛出异常。Issue #381
- 缺陷修复:当存在日志记录注解时,提取的常量将放置在类体外部。Issue #388
v0.10.4(2011 年 11 月 21 日)
- 缺陷修复:现在可以在静态初始化程序中使用来自
@Log
等的log
字段。Issue #368 - 缺陷修复:现在可以在 eclipse 上自动格式化包含 lombok 的代码,即使通过自动保存操作也是如此。Issue #163
- 缺陷修复:现在可以在存在 lombok 注解的情况下让 eclipse 生成各种方法。Issue #211
- 缺陷修复:在 eclipse 中重命名 @Data 注解的类不再损坏数据注解。Issue #359
- 缺陷修复:Eclipse 保存操作向私有字段添加 final 修饰符不再向
@Setter
字段添加 final 关键字。Issue #336 - 缺陷修复:混合标签和
lombok.val
会导致 javac 中的 NPE。Issue #372 - 缺陷修复:在 eclipse 中,完整写出
lombok.val
(而不是使用 import 语句)不起作用。Issue #373
v0.10.2(2011 年 11 月 1 日)
- 缺陷修复:当使用 -sourcepath 选项时,Delombok 将不再混淆来自不同文件的注释。Issue #357
- 缺陷修复:事实证明,将
@NotNull
视为指示 lombok 应生成空值检查保护的注解会导致各种问题。这已再次删除,并且文档已更新以反映这一点。Issue #360 - 缺陷修复:
@EqualsAndHashCode
或@Data
在非静态内部类(其外部类具有类型变量)上不起作用。现在可以了。Issue #362
v0.10.1(2011 年 10 月 3 日)
- 缺陷修复:eclipse 中的
@Delegate
可能会在 0.10.0 中导致内存泄漏。Issue #337 - 缺陷修复:枚举值上的注解被 delombok 删除。Issue #342
- 缺陷修复:
@AllArgsConstructor
错误地为已在其声明中分配的 final 变量生成了参数和赋值。Issue #351 - 增强功能:
@NotNull
现在也被识别为指示 lombok 应在生成的构造函数和 setter 中生成空值检查保护的注解。Issue #344
v0.10.0 “燃烧的鸸鹋”(2011 年 8 月 19 日)
- 功能:新注解:@Delegate。此注解使 lombok 可以为给定的字段生成委托方法。更多…
- 功能:添加了对“val”的支持。Val 是一个不可变变量,它从初始化表达式的右侧推断其类型。更多…
- 功能:通过
@Log
、@Slf4j
等注解添加了对多个日志记录框架的支持。更多… - 功能:Lombok 现在支持后编译转换器。Issue #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”的目录的子目录中时,安装程序现在可以找到这些安装。Issue #283
- 增强功能:为
@Cleanup
添加空值检查 Issue #227 - 缺陷修复:Lombok 现在与 javac 7 兼容。
- 缺陷修复:已修复 Eclipse 中错误日志中
getTypeBinding
方法上难以重现的NullPointerException
。Issue #237 - 缺陷修复:
@Setter
和@Getter
现在可以再次应用于静态字段(仅在 v0.9.3 中损坏)。Issue #209 - 缺陷修复:delombok 向构造函数添加了类型参数,这些类型参数镜像了类型自身的类型参数。这导致 delombok 将任何采用至少 1 个类型为“T”的参数的生成构造函数转换为无法编译的内容,并且启动时,会出现令人困惑的错误消息(“T 与 T 不兼容”)。现在已修复。Issue #213
- 缺陷修复:Eclipse 源代码生成器会将生成的代码放置在类外部 Issue #228
- 缺陷修复:当使用 m2eclipse 时,偶尔会在 JavacProcessingEnvironment 上看到 ClassNotFoundError。这已得到修复。Issue #250
- 缺陷修复:将生成全部或不生成
equals
、hashCode
和canEqual
。Issue #313 - 缺陷修复:输出到目录模式下的 Delombok 在 mac 和 linux 上生成非常长的路径。Issue #322
- 缺陷修复:Eclipse 中已修复各种重构脚本和保存操作错误,但大多数错误仍然存在。
v0.9.3 “穴居鲸”(2010 年 7 月 25 日)
- 功能:现在可以将
@Getter
或@Setter
添加到类中,这就像将这些注解添加到其中的每个非静态字段一样是合法的。Issue #202 - 功能:已添加三个新的注解,
@NoArgsConstructor
、@RequiredArgsConstructor
和@AllArgsConstructor
。这些注解分离了@Data
生成构造函数的能力,并且还允许您微调您想要的构造函数类型。此外,通过使用这些注解,即使您有自己的构造函数,也可以强制生成构造函数。Issue #152 - 功能:由 lombok 生成的构造函数现在包含
@java.beans.ConstructorProperties
注解。这确实意味着这些构造函数不再在 java 1.5 中工作,因为这是 java 1.6 功能。可以通过在@RequiredArgsConstructor
或@AllArgsConstructor
注解中将suppressConstructorProperties
设置为true
来抑制该注解。Issue #195 - 功能:如果合适的 getter 可用,生成的
toString
、equals
和hashCode
方法现在将使用this.getX()
和other.getX()
而不是this.x
和other.x
。此行为对于代理类(例如 hibernate 生成的 POJO)很有用。可以使用@ToString/@EqualsAndHashCode(doNotUseGetters = true)
抑制 getter 的使用。Issue #183 - 增强功能:FindBugs 的
@CheckForNull
现在像@Nullable
一样从字段复制到 setter 的参数和 getter 方法。Issue #201 - 增强功能:插件和
@SneakyThrows
:注解中类型的解析现在可以更好地工作,特别是对于不在核心 java 库中的类。Issue #161 - 增强功能:如果未找到
tools.jar
(运行 delombok 时需要),现在会生成有用的错误消息。现在对tools.jar
的搜索也将在JAVA_HOME
中查找。 - 增强功能:内部类上的 toString() 现在将类名列为
Outer.Inner
而不仅仅是Inner
。Issue #206 - 增强功能:由 lombok 生成的所有字段访问现在都已限定(如下所示:
this.fieldName
)。对于那些配置了非限定字段访问警告的人,这些警告应该不再发生。Issue #121 - 增强功能:由 lombok 生成的所有字段和方法现在都附加了
@SuppressWarnings("all")
,以避免诸如缺少 javadoc 之类的警告,对于那些启用了该警告的人来说。Issue #120 - 平台:Lombok 现在应该可以在独立的 ecj(Eclipse Java 编译器)中运行。这不仅对于少数实际每天使用此编译器的人有用,而且各种 eclipse 构建工具(例如 RCP 构建器)也在内部运行 ecj。Issue #145
- 缺陷修复:Eclipse:
@Data
和其他注解现在在您包含带有有界通配符泛型的字段(例如List<? extends Number>
)时不会抛出错误。Issue #157 - 缺陷修复:复杂的枚举无法正确 delombok。Issue #169
- 缺陷修复:delombok 现在不再忘记删除
import lombok.AccessLevel;
。在 netbeans 中,该导入将不再被错误地标记为未使用。Issue #173 和 Issue #176 - 缺陷修复:虽然不鼓励,但
import lombok.*;
应该在绝大多数情况下都有效。但是,在 eclipse 中,它不起作用。现在可以了。Issue #175 - 缺陷修复:当
@Getter
或@Setter
应用于多个字段声明(例如@Getter int x, y;
)时,注解现在应用于所有字段,而不仅仅是第一个字段。Issue #127 - 缺陷修复:如果 delombok 包含
<?>
样式通配符以及至少 1 个 lombok 注解,则大多数 javacs 会退出并显示 NoSuchFieldError。不再如此。Issue #207 - 构建:现在通过 ivy 自动获取依赖项,并且大多数依赖项现在默认包含源,这对于那些自己处理 lombok 源代码的人来说特别方便。
v0.9.2 “冰雹兔”(2009 年 12 月 15 日)
- 初步支持 NetBeans 上的 lombok! - 感谢来自 NetBeans 的 Jan Lahoda。Issue #93
- lombok 现在附带 delombok 工具,该工具将填充源的整个目录复制到新目录,将任何 java 文件脱糖为没有 lombok 转换时的外观。在没有 lombok 支持的情况下编译此新目录中的源应该会产生与在 lombok 支持下编译原始源相同的类文件。非常适合仔细检查 lombok 正在做什么,以及将 delombok 后的源链接到基于源的 java 工具(例如 Google Web Toolkit 或 javadoc)。lombok.jar 本身还提供了一个用于 delombok 的 ant 任务。delombok 的完整文档。
- Lombok 现在可以在 openjdk7 上运行(已使用 JDK7m5 测试)!对于所有处于前沿的人来说,这应该是非常好的消息。Issue #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 上运行。Issue #95
- Lombok 现在可以在 JDK 1.6.0_0 上运行,对于我们这些在系统上安装了非常旧的 JDK1.6 的人来说。Issue #156
- 在 Eclipse 中错误地使用 lombok(将其作为注解处理器添加到项目中,这不是在 Eclipse 上使用 lombok 的方式)现在会生成有用的警告消息以及有用的信息,而不是隐藏在日志中的令人困惑的错误。Issue #126
- 已修复:回归错误,您偶尔会在“loader constraint violation: when resolving...”的要点中看到错误,例如在打开帮助系统、启动差异编辑器或极少数情况下打开任何 java 源文件时。Issue #141
- 已修复:没有任何参数的 @SneakyThrows 应该默认为
Throwable.class
,但它在 javac 中没有任何作用。Issue #146 - 已修复:在扫描现有方法时,现在忽略大小写,因此如果
setURL
已经存在,则具有名为url
的字段的类上的@Data
注解将不再也生成setUrl
。Issue #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 启动目标现在可以在雪豹系统上开箱即用。Issue #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 安装程序在启动时会失败。Issue #138
- 使用 javac 编译时,
@Data
可以生成的静态构造器之前被生成为包私有访问权限。Issue #136
v0.8.5 (2009年9月3日)
- 现在
AccessLevel.NONE
可用于@Getter
和@Setter
注解,以便在使用@Data
注解时抑制生成 setter 和 getter。解决 Issue #110 @EqualsAndHashCode
和@ToString
现在都支持通过新的 'of' 参数显式指定要使用的字段。默认情况下,以 '$' 开头的字段现在也被排除在 equals、hashCode 和 toString 生成之外,除非您在 'of' 参数中显式提及它们。解决 Issue #105- javax.validation(以及早期版本的 hibernate,它是 javax.validation 的起源)中有一个常用的
@NotNull
注解,但它的含义与我们期望的略有不同:它在参数上不合法,并且在显式请求验证后在运行时检查。作为一种变通方法,我们已从 Lombok 生成的 Getters、Setters 和构造函数的非空支持中移除了对任何名为NotNull
的注解的检查。Issue #116 - 修复了
@SneakyThrows
的另一个问题。这在 v0.8.4 中报告已修复,但它仍然没有完全按预期工作。仍然属于 Issue #103 的范畴
v0.8.4 (2009年9月2日)
- 修复了
@SneakyThrows
的许多问题 - 在之前的版本中,使用它有时会混淆语法着色,并且带注解的方法中的各种构造会导致明显的 eclipse 错误,例如以 try 代码块开始方法。这也修复了 Issue #103 - 修复了 David Lynch bug - 在 eclipse 中,使用了 Lombok 功能的类有时在其他源文件中会变得不可见。在 Issue #114 上有更详细的描述。如果您遇到过这个问题,您就会知道这是关于什么的。
- 修复了 eclipse 的帮助系统在 Lombok 化的 eclipse 上无法启动的问题。Issue #99
- 所有生成的方法现在都将其参数(如果有)设为 final。这应该有助于避免 eclipse 中“将所有参数设为 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日)
- 当
@EqualsAndHashCode
(以及间接地,@Data
)覆盖 java.lang.Object 以外的类但未将 EqualsAndHashCode 的 callSuper 设置为 true 时,会生成警告。但是,这样做有合理的理由,因此如果您显式将 callSuper 设置为 false,则不再生成此警告。如果故意不调用 super,则警告文本现在也引用此操作。 - 如果您的字段具有
@NonNull
或@NotNull
注解,则生成的 setter 会生成 null 检查,并且注解会被复制到 setter 的参数和 getter 的方法中。 - 修复了一个烦人的 bug,该 bug 通常在您有 package-info.java 文件时出现。它会导致
NullPointerException
,位置在 lombok.javac.apt.Processor.toUnit(Processor.java:143)
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 的“查找调用者”现在将查找静态构造函数的调用者(如果您生成了它)。如果不是,它仍然像以前一样查找 hashCode() 的调用者(虽然无法让 eclipse 查找普通构造函数的调用者,但您可以直接对类名使用“查找调用者”,这效果很好)。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 特定的代码来查找和安装 eclipse。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。)