在使用Java注释时,我不太明白这一点。这是一个例子:
我创建一个@Log注释并添加一些功能(每个使用@Log注释的方法在执行方法之前运行一些日志)。
现在我正在创建一个像这样的新@SuperLog注释:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Log
public @interface SuperLog {
............
}
这个@SuperLog必须提供@Log所做的所有内容,以及一些特定于@SuperLog的额外内容。
不幸的是,当我执行一些使用@SuperLog注释的方法时,特定于@Log的日志不会执行。
我不明白为什么:@SuperLog用@Log注释的事实并不意味着它从@Log“继承”属性?不应该@SuperLog做@Log应该做的每一件事吗?
正如这个question概述的那样,没有注释的继承。
除此之外:请记住,注释(主要)在运行时获得意义,因为某些框架会对其存在作出反应。
换句话说:您可以创建一个框架,以某种方式支持继承树附带的注释。但假设您正在使用某个现有框架,则必须接受此框架正在执行的操作。
我猜你'执行一些带注释的方法@SuperLog'意味着使用'Spring AOP'。
正如GhostCat所说,inheritance
取决于框架的实现。不幸的是,Spring AOP切入点还不支持元注释。
你可以关注this spring improvement。