Lombok 注解和继承

问题描述 投票:0回答:1

我目前正在 Spring boot 中开发一个项目,并且在继承类中遇到一些问题。问题来自于我在抽象父类中使用注释(例如 @Data),但这些注释不会被子类继承。我还使用 chatgpt 来提问(因为这是我的第一个 Spring Boot 项目),它提到“Lombok 注释确实由 Java 中的子类继承,包括 Spring Boot 项目。如果父类具有 Lombok 注释,例如 @Data、@ AllArgsConstructor、@NoArgsConstructor等,子类应该继承这些注解及其行为,而不需要子类中多余的注解。”然而,即使将我的课程输入其中似乎也无法识别或帮助解决问题。

以下是类的示例:

@Data
@AllArgsConstructor
@NoArgsConstructor
public abstract class AbstractResponse {
    private boolean success;
}

接着是儿童班:

public class QuoteResponse extends AbstractResponse{
    private double c;
    private double d;
    private double dp;
    private double h;
    private double l;
    private double o;
    private double pc;
    private long t;
}

如果我不在子类中使用 @Data,我就没有 getter 和 setter。最初我认为这是正常的,但由于 chatgpt 多次提到它应该有效,我想澄清一下。

java spring-boot lombok
1个回答
0
投票

如果您查看 Lombok 注释的来源(例如

AllArgsConstructor

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface AllArgsConstructor {

Data

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface Data {

)您可以看到这些注释本身带有

@Retention(RetentionPolicy.SOURCE)
注释。

RetentionPolicy.SOURCE
注释意味着生成的类文件不再包含任何Lombok注释的痕迹:

public static final RetentionPolicy SOURCE

注释将被编译器丢弃。

© www.soinside.com 2019 - 2024. All rights reserved.