我目前正在 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 多次提到它应该有效,我想澄清一下。
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
注释将被编译器丢弃。