在使用 Java 注释时,有一些我不确定要理解的东西。这是一个例子:
我创建了一个 @Log 注释并添加了一些功能(每个用 @Log 注释的方法在执行该方法之前都会运行一些日志)。
现在我正在创建一个新的 @SuperLog 注释,如下所示:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Log
public @interface SuperLog {
............
}
这个@SuperLog 必须提供@Log 所做的所有内容,以及一些特定于@SuperLog 的额外内容。
不幸的是,当我执行一些用@SuperLog 注释的方法时,特定于@Log 的日志不会执行。
我不明白为什么:@SuperLog 用 @Log 注释的事实并不意味着它“继承”了 @Log 的属性?@SuperLog 不应该做@Log 应该做的每一件事吗?
正如这个问题所概述的,没有注释的继承。
除此之外:请记住,注释(主要)在运行时才有意义,因为某些框架会对它们的存在做出反应。
换句话说:您可以创建一个框架,以某种方式支持带有继承树的注释。但是假设你正在使用一些现有的框架,你必须接受这个框架正在做的事情。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句