Java:元注解

Java提供了四个用于修饰自定义注解的元注解:@Target、@Retention 、@Documented和@Inherited

元注解——@Target

@Target:用于指定被修饰的自定义注解只能用于修饰程序中哪些元素,该元注解有如下属性值:

1.ElementType.ANNOTATION_TYPE:应用于其他注解的元注解

2.ElementType.CONSTRUCTOR:应用于构造函数

3.ElementType.FIELD:应用于全局属性

4.ElementType.LOCAL_VARIABLE:应用于方法中的本地变量

5.ElementType.METHOD:应用于方法

6.ElementType.PACKAGE:应用于包

7.ElementType.PARAMETER:应用于方法的参数

ElementType.TYPE:应用于类、接口或者枚举声明

示例

代码1

:限制自定义注解@Override只能用来标注方法。注意:由前面知识可知大括号可以去掉。

代码2

 注:自定义@SuppressWarnings注解,限制该注解只能用于修饰属性、方法

元注解——@Retention

@Retention:用于指定被修饰的自定义注解可以保留多久,该元注解有如下属性值:

1.RetentionPolicy.SOURCE:编译器将直接丢弃被修饰的注解。

2.RetentionPolicy.CLASS:默认值,编译器将把注解记录在class文件中,当运行Java程序时,虚拟机不再保留注解;

3.RetentionPolicy.RUNTIME:编译器将把注解记录在class文件中,当运行java程序时,虚拟机保留注解,程序可以通过反射获取该注解;

示例

代码1

 注:当运行java程序时,JVM虚拟机保留注解

 代码2

 代码3

元注解——@Documented

@Documented:执行javadoc命令时,被该元注解修饰的自定义注解也会生成在文档中,如下例: 

代码1

代码2

Eclipse中进行如下操作:

1、选中java工程à鼠标右键点击“Export…”,出现下图: 

 2、在上图红框处输入javadocà点击“Next >”按钮,出现下图:

3点击“Finish”按钮à开项目根目录à打开名为doc的文件夹à使用浏览器软件(如Google)打开名为index.html文件à点击 “Student”导航,在右侧即可找到如下内容: 

说明:如果@Documented元注解没有修饰前面Override自定义注解,则生成的文档不会有如上图红框框起的部分。 

元注解——@Inherited 

@Inherited:如果父类所使用的注解有@Inherited修饰,则子类可以继承该注解,否则不能继承。

示例

代码1

注: Father类添加了由@Inherited注释所修饰的Bean自定义注解,所以有内容输出;如果将@Inherited注释去掉,尽管Father类依然有Bean自定义注解,但却没有内容输出。

代码2

 

 代码3

 

猜你喜欢

转载自blog.csdn.net/DragonGirI/article/details/82975534