gpt4 book ai didi

java - 使用 lombok 注释的继承会出错

转载 作者:行者123 更新时间:2023-11-30 10:11:39 26 4
gpt4 key购买 nike

在我的项目中,lombok 用于避免为类编写 getter 和 setter。我有两个类 Child extends Parent:

@Value
@Builder
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class Parent {
@Nonnull
@JsonProperty("personId")
private final String personId;

@JsonProperty("personTag")
private final String personTag;
...
}

@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 注释到你的父类(super class)

详细信息:@Value 注释使类成为final,因此您不能继承它。实验性的 @NonFinal 注释应该可以防止这种情况。

import lombok.Value;
import lombok.experimental.NonFinal;

@Value
@NonFinal
public class Parent {

编号:https://projectlombok.org/features/Value


注意:出于性能原因(如果重要的话)最终(值)对象可以(理论上)超快。优化器可以在堆栈内存中分配它们,或者在循环中重复使用相同的堆栈 block ,因此没有 GC 开销。

(这类似于 .NET structure 值对象通常由 .NET framework 分配的方式)

通过添加@NonFinal 这样的优化机会就消失了。

关于java - 使用 lombok 注释的继承会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52341050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com