Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。 当然它也支持自定义 Java 标注。
网上很多关于 Java Annotation 的文章,看得人眼花缭乱。Java Annotation 本来很简单的,结果说的人没说清楚;弄的看的人更加迷糊。
我按照自己的思,对 Annotation 进行了整理。理解 Annotation 的关键,是理解 Annotation 的语法和用法,对这些内容,我都进行了详细说明;理解 Annotation 的语法和用法之后,再看 Annotation 的框架图,可能有更深刻体会。废话就说这么多,下面开始对 Annotation 进行说明。若您发现文章中存在错误或不足的地方,希望您能指出!
理解了的 3 个类的作用之后,我们接下来可以 Annotation 实现类的语义了。
注意:它和我们通常的 implemented 实现接口的方法不同。Annotation 接口的实现细节都由编译器完成。通过 @intece 定义注解后,该注解不能继承其他的注解或接口。
理解这一点之后,我们就很容易理解 java 中自带的 Annotation 的实现类,即 Annotation 架构图的右半边。如下图:
例如,若某个方法被 @Deprecated 标注,则该方法不再被使用。如果有开发人员试图使用或重写被 @Deprecated 标示的方法,编译器会给相应的提示信息。示例如下:
对比的两个结果,我们发现:当注解 Inheritable 被 @Inherited 标注时,它具有继承性。否则,没有继承性。
(02) 若某个方法被 @Override 的标注,则意味着该方覆盖父类中的同名方法。如果有方法被 @Override 标示,但父类中却没有被 @Override 标注的同名方法,则编译器会报错。任雪案件示例如下:无锡管道改造http://75734.shop.52bjw.cn。
网友评论 ()条 查看