Spring Boot中Lombok注解继承问题咨询:子类未继承父类注解功能
Lombok注解在继承场景下的生效规则与解决方案
首先明确:Lombok的@Data、@AllArgsConstructor、@NoArgsConstructor等核心注解不具备继承性,ChatGPT的说法是错误的。
原因说明
Lombok是在编译阶段通过注解处理器生成字节码,这些注解本身没有被Java的@Inherited元注解标记,因此子类不会继承父类的Lombok注解功能。父类通过Lombok生成的getter/setter、构造方法等属于父类成员,子类能继承这些方法,但Lombok不会因为父类加了注解就自动为子类自身的属性生成对应的方法。
解决方案
- 直接在子类添加
@Data注解:这是最简便的方式,Lombok会为子类自身的属性生成getter/setter、equals、hashCode等方法,同时子类会继承父类已生成的所有方法。注意:父类的全参/无参构造不会自动被子类继承,若子类需要对应构造方法,需单独添加@AllArgsConstructor或@NoArgsConstructor。 - 子类单独使用
@Getter+@Setter:如果不需要@Data附带的equals、hashCode等方法,仅需子类属性的访问器,可单独添加这两个注解。
代码示例
父类定义
@Data @AllArgsConstructor @NoArgsConstructor public abstract class AbstractResponse { private String code; private String message; }
子类正确写法(使用@Data)
@Data public class QuoteResponse extends AbstractResponse { private String quoteContent; private String author; }
子类精简写法(仅用@Getter@Setter)
@Getter @Setter public class QuoteResponse extends AbstractResponse { private String quoteContent; private String author; }
内容的提问来源于stack exchange,提问作者learningProgrammer
相关产品推荐
相关产品推荐

