在我的项目中,lombok 用于避免为类编写 getter 和 setter。
我有两节课Child
延伸Parent
:
@Value
@Builder
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class Parent {
@Nonnull
@JsonProperty("personId")
private final String personId;
@JsonProperty("personTag")
private final String personTag;
...
}
And
@Value
@Builder
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class Child extends Parent {
@Nonnull
@JsonProperty("childId")
private final String childId;
...
}
但这似乎不起作用,因为没有可用的默认构造函数Parent
。我不熟悉 lombok 注释。有什么好的方法可以扩展Base类并同时使用lombok注释吗?
TL;DR:添加@NonFinal
注释到你的超类
细节:@Value
注释使类final,所以你不能继承它。实验性的@NonFinal
注释应该可以防止这种情况。
import lombok.Value;
import lombok.experimental.NonFinal;
@Value
@NonFinal
public class Parent {
REF: https://projectlombok.org/features/Value https://projectlombok.org/features/Value
NOTE:出于性能原因(如果很重要)最终(值)对象可以(理论上)超快。优化器可以在堆栈内存中分配它们,或者循环重用相同的堆栈块,因此没有 GC 开销。
(这类似于 .NETstructure
值对象通常由.NET框架分配)
通过添加@NonFinal,这样的优化机会就会消失。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)