主要有四种的标准的meta-annotation,都在java.lang.annotation的package中...
1.@Target指定那个程序单元可以有其所定义的annotation
(程序单元:class.interface,enum,field,method,parameter,constructor,variable package,annotation。参看ElementType类)
需要import(java.lang.annotation.ElementType;java.lang.annotation.Target;)两个类
引用
//只能用于TYPE和METHOD的程序单元
@Target({ElementType.TYPE,ElementType.METHOD})
public @interface MyAnnotation {}
//只能用于自己
@Target({ElementType.ANNOTATION_TYPE})
public @interface MyAnnotation {}
//适用于所有,不要定义Targer
public @interface MyAnnotation {}
2.@Retention告诉Java编译器如何对待annotation,有三种情况(参见RetentionPolicy类)
需要import(java.lang.annotation.Retention;java.lang.annotation.RetentionPolicy;)两个类
SOURCE:Annotation会被编译器丢弃,如SuppressWarnings这个annotation
CLASS:保留在class的文件中,但会被VM忽略,默认的annotation
RUNTIME:保留在class的文件中且由VM读取
引用
@Retention(RetentionPolicy.CLASS)
public @interface MyAnnotation {}
3.@Documented定义annotation是否被视为注释在JavaDoc出现
需要import(java.lang.annotation.Documented)这个类
引用
@Documented
@Retention(RetentionPolicy.RUNTIME)
//使用@Documented就必须使用@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {}
4.@Inherited,继承父类的annotation,仅仅用在subclass,且superclass的annotation全部继承下来。
需要import(java.lang.annotation.Inherited)这个类
引用
@Inherited
public @interface MyAnnotation {}
@MyAnnotation
public class Anno {
}
//SubAnno 会把Anno 的annotation继承下来
public class SubAnno extends Anno {
}
当然,如果子类的方法的覆盖父类带有annotation的方法是,改annotation是不会被继承的。
可以通过JavaDoc看效果...
关于Reflenting,annotation的自我减产工具,判断某个类具有什么也的annotation
如:判断时候是MyAnnotation类型的annotation)
引用
Class c = SubAnno.class;
System.out.println(c.isAnnotationPresent(MyAnnotation.class));
还要学习AnnotatedElement类...
分享到:
相关推荐
本文将深入探讨"Ruby-Annotate"工具,这是一个用于Rails项目的实用程序,能够自动为你的模型添加注释,显示有关数据库模式、关联和路由的信息。 **Ruby-Annotate** 是一个Ruby gem,它的主要功能是分析你的Rails...
《jQuery.annotate.js:图片注释插件的深度解析与应用》 在网页设计与开发中,为图片添加注释是一项常见的需求,它可以帮助用户更好地理解图片所传达的信息,提升用户体验。jQuery.annotate.js 是一个专为此目的...
`ng-annotate`是一个命令行程序,能够检测并添加、修改或删除 AngularJS 的DI注解,确保代码在使用诸如UglifyJS之类的压缩工具后仍能正常工作。通过与Webpack的loader系统集成,ng-annotate-loader使得这个过程无缝...
AngularJS是一个强大的JavaScript MVC框架,它的核心特性之一就是依赖注入。DI允许开发者声明所需的依赖服务,而无需关心这些服务如何被创建和管理。然而,在构建和压缩代码时,原始的依赖注入语法可能会丢失,导致...
此外,GitHub作为全球最大的代码托管平台之一,在Redis项目的介绍中被多次提及。GitHub不仅托管了Redis 3.0版本的代码,也提供了问题跟踪、代码审查、项目管理和软件开发协作的综合平台。开发者可以通过GitHub与其他...
### Altium Designer中重新Annotate的技巧 #### 背景介绍 在电子设计领域,Altium Designer是一款广泛使用的EDA(电子设计自动化)软件工具,它提供了从电路原理图设计到PCB(印制电路板)布局的一整套解决方案。在...
在Django ORM中,`values()`和`annotate()`是两个非常重要的查询工具,它们帮助开发者高效地处理数据库查询,特别是涉及到聚合操作时。本文将详细解释这两个方法的使用。 `values()`方法允许你在查询结果中指定你...
在进行大规模文本标注时,错误分析能够帮助用户发现并纠正标注过程中的错误或不一致之处。这可能涉及到对标注结果的自动检查,或者提供工具来比较不同用户的标注,以便找出潜在的分歧。通过这种方式,系统可以帮助...
官方版本,亲测可用
《Firefox扩展:annotate-page_addon,开启网页注解新纪元》 ...如果你是Firefox的用户,那么annotate-page_addon无疑是你必备的插件之一。只需一个zip文件的下载和安装,你就可以开启全新的网页注解体验。
总之,"Annotate Chinese with Pinyin-crx"插件通过在网页上为中文添加拼音注释,极大地提升了中文学习者的阅读体验和学习效率。其简单易用的特性,无论是对个人学习还是教学场景,都具有很高的实用价值。如果你在...
在这个文件中,可能会定义“sym_hist_filter”函数,也可能包含与之交互的其他函数和数据结构。 在深入研究“builtin-annotate.c”之前,我们需要理解C语言的基本概念,如函数定义、变量声明、控制结构、内存管理和...
pdf-annotate.js 注释层。 合并后的分支和已删除的DynamicEnvironmentSystems / pdf-annotate.js的分支。 下内使用积极发展 。 要报告pdf-annotate.js的问题,请将其提交到存储库下。 目标 为提供一个低层注释层...
**ng-annotate-webpack-plugin** 是一个专为前端开发者设计的Webpack插件,它与AngularJS框架紧密配合,特别是在使用Webpack进行构建时。Webpack是流行的模块打包工具,它能够处理JavaScript和其他资源,将其优化并...
名称:Annotate Web Annotations with S ---------------------------------------- 版本:8.26 作者:https://annotate.net/ 分类:实用工具 ---------------------------------------- ...在您的远程学习和GoogleMeet
通过在annotate.tech创建一个免费帐户,用户可以将所有保存的注释全部取出。 在不创建帐户的情况下,注释仍然保存在页面级别的浏览器中。 除了大量的预设建议之外,用户还可以添加,编辑和删除建议。这使用户能够...
pdf-annotate是一个简单的库,用于将PDF注释添加到PDF。 在后台,它使用功能强大且不受限制的pdfrw库来解析PDF,以找出放置注释的位置。 用法 from pdf_annotate import PdfAnnotator , Location , Appearance a = ...
添加存储库后,选择“ Package Control: Install Package ”,然后从列表中选择“ annotate-subl ”。 安装后,Sublime 会提示你使用 Genius 授权 annotate-subl。 买者自负! 当前奇怪的模因: 现在 annotate-subl...
$ npm install --save-dev gulp-ng-annotate 用法 var gulp = require ( 'gulp' ) ; var ngAnnotate = require ( 'gulp-ng-annotate' ) ; gulp . task ( 'default' , function ( ) { return gulp . src ( 'src/app....