Java 和 @annotations

安东博尔夫

在使用 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

RabbitMQ的Android和Java的

OpenJDK的和Java在webstart

jpa独立的自定义类型映射/替代org.hibernate.annotations.Type和org.hibernate.annotations.TypeDef的javax.persistence.x

Java和SSL证书

Java映射和基元

Java和Mathematica交互

Java和泛型

java.lang.RuntimeException:在模块批注16.0.1.jar和批注-java5-15.0.jar中发现重复的类org.intellij.lang.annotations.Flow

GraphQL和Java

Dagger 2和Android Annotations可以一起使用吗?

错误:多个dex文件使用Admob和Facebook Cordova插件定义了Landroid / support / annotations / AnimRes

java finalizer和gc

io.swagger.annotations和com.wordnik.swagger.annotations有什么区别

Java 8和Java时间

Kotlin,Java,multidex,Dagger 2,Butterknife和Realm:transformClassesWithJarMergingForDebug:重复条目:org / jetbrains / annotations / NotNull.class

java.lang.NoClassDefFoundError:org / hibernate / metamodel / source / annotations / JPADotNames错误

情节:如何使用add_annotations设置箭头的样式和颜色?

Java Hibernate org.hibernate.annotations.Index

Java和Java河豚

Java和HID通讯

Java MySQL和Java混淆

Java NullPointerException和ArrayList

java.lang.NoSuchMethodError:org.hibernate.annotations.common.reflection.java.JavaReflectionManager.setMetadataProvider

TransformException:java.util.zip.ZipException:重复项:io / realm / annotations / Ignore.class

使用 Android Annotations、Mockito 和 MVP 模式时的单元测试

如何让 IDE 通过 @annotations 和 AST 转换了解对类的添加?

使用 java Annotations 生成 Postgresql 表

Java: For 和 If

Spring Boot + Java 11 + Mybatis:@Many 在 Annotations 方法中被忽略