java - Java8中带注解的继承

标签 java inheritance annotations

我知道注解既不能被继承,子类也不能包含父级注解。但是,我有一个简单的场景。假设,我有 N 个类,例如 A、B、C、D……N。
A 是父类(super class),B、C、D....N 是子类,即 A 的子类。因此,如果我需要继承这些类,我需要按以下方式进行:

class B extends A {
     //code
}

class C extends A {
     //code
}
......
class N extends A {
     //code
}

所以我需要手动扩展 A 类 N 次。
现在,我的问题是我不能创建一个类似注释的 @ParentIsClassA 子级类通过它自动扩展类 A 吗?
我要实现的示例代码如下:

@ParentIsClassA
class B {
    //code
}

@ParentIsClassA
class N {
    //code
}

最佳答案

注释通常不能修改 Java 中类的编译。 (Lombok 使用特殊且脆弱的编译器 Hook ;Groovy AST 可以完成您所说的。)

也就是说,为什么?您仍然必须像 extends 子句一样插入该注释,然后您会遇到诸如 IDE 不理解这些关系的问题。只需使用正常的继承,不要混淆您的工具和其他程序员。

您可能还对 the @Inherited meta-annotation 感兴趣.

关于java - Java8中带注解的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39137593/

相关文章:

java - 如何在Hibernate中的HQL中编写SQL join

java - 具有继承映射的一对多 JPA 映射

java - 是否有办法跟踪 MuleMessage 以了解执行了哪些流程?

java - 运行时Exec改变路径

Ruby - 结构和命名参数继承

inheritance - 一个结构是否可以扩展现有结构,同时保留所有字段?

java - 您应该使用父类(super class)构造函数来设置变量吗?

java - 通过注解获取java bean属性值

Spring @Transactional v Spring Security @Secured 不一致的行为

java - 使用 Java PDFBox 将希伯来语写入 PDF