注解的可继承问题

@XXX如果在父类意已经标注上去的话,能不能被子类继承到要看源码里面是否有@Inheritance

例如:


@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Service {
    String value() default "";
}
所以@Service是不能被继承的,子类想要实现@Service ,必须自己定义


抱歉没找到jdk源码里面可以继承的例子

反正实现自定义注解的时候,如果想要实现注解的继承只需要加上@Inheritance


 Inheritance 注释

  OpenJPA 是一个基于注释的持久化框架,对持久化的大多数元信息都只需要为实体类提供相应的注释。开发者使用注释描述实体和数据库表之间的映射,也采用注释描述对象继承关系的持久化。javax.persistence.Inheritance 注释用来指定对象继承关系持久化的方式。它的 strategy 属性用于指定持久化对象继承关系在关系数据库中的表现形式,可选择项包括 SINGLE_TABLE、JOINED 和 TABLE_PER_CLASS。它们三个都是 javax.persistence.InheritanceType 中定义的常量。

  SINGLE_TABLE

  strategy 设置为 SINGLE_TABLE 选项表示所有类及其子类保存在同一个数据库表中,对象的类型使用表中的特殊字段 DTYPE 进行识别。

  TABLE_PER_CLASS

  strategy 设置为该选项表示每个类使用一个表。

  JOINED

  strategy 设置为该选项表示父类和子类分别保存在不同的数据库表中,子类中不保存父类对应数据库表中已有的属性,仅通过主键进行关联。

  javax.persistence.Inheritance 注释是类级别的注释。需要为每一个成为父类的实体类提供 javax.persistence.Inheritance 注释并且指定 strategy 属性。在同一个企业应用中,开发者可以根据实际情况选择这三种策略中的一种,或者是几种同时使用。

  对象继承关系的持久化和查询


你可能感兴趣的:(注解的可继承问题)