继承类注释

时间:2011-08-24 09:59:54

标签: java annotations ejb-3.0

有没有办法让类继承超类的注释?

e.g。

@ApplicationException(rollback=true)
public abstract class AbstractBeanActionException extends Exception {
    /* method body is simply calls to super() */
}

public class OrderBeanException extends AbstractBeanActionException {
    /* does this class have to be annotated as well ? */
}

5 个答案:

答案 0 :(得分:19)

如果您自己定义注释类,则可以使用@Inherited元注释:

  

表示自动继承注释类型。如果注释类型声明中存在Inherited元注释,并且用户在类声明上查询注释类型,并且类声明没有此类型的注释,则将自动查询类的超类以获取注释类型。

答案 1 :(得分:8)

子类不能继承类注释。

你可以做的是“强制”子类在编译时使用注释:

https://community.oracle.com/docs/DOC-983563

答案 2 :(得分:4)

注释不会被继承。但是使用注释(在本例中为EJB3)的框架可以选择在类层次结构中导航以查看它是否存在于超类中。

查看javadoc of this annotation:它具有inherited属性,精确地指示此注释是否也应该应用于子类。

答案 3 :(得分:3)

类子注释不能由子类继承,但非私有非构造函数成员方法和字段上的注释与它们关联的方法/字段一起被继承。因此,您可以尝试使用它们来达到预期的效果。

答案 4 :(得分:1)

当一个类标记有一个注释,该注释本身用java.lang.annotation.Inherited注释时,您可以请求该类上的注释,并且继承的注释应该显示在结果中。

ApplicationException未标记为Inherited。好吧。