【问题标题】:Inheritance with annotation in Java8Java8中带注解的继承
【发布时间】:2016-08-25 05:51:06
【问题描述】:

我知道注解既不能被继承,也不能子类包含父级注解。但是,我有一个简单的场景。假设,我有 N 个类,例如 A、B、C、D......N。
A 是超类,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 inheritance annotations


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的建议....您能分享一些@Inherited 的代码示例,我可以通过它来执行此操作吗?
猜你喜欢
  • 2014-09-03
  • 1970-01-01
  • 2011-11-02
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
  • 2018-01-04
  • 2011-03-31
  • 1970-01-01
相关资源
最近更新 更多