元注解

元注解

开发工具与关键技术:myEclipse javaEE
作者:街角
撰写时间:201806027

元注解的作用就是负责注解其他注解。
Java定义了4个标准的 meta-annotation类型,
它们被用来提供对其它 annotation 类型作说明。
有以下四种;
@Target,@Retention, @Document,@Inherited

  1. @Target:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)
修饰的范围
描述构造器 CONSTRUCTOR
描述域即类成员变量 FIELD
描述方法 LOCAL_VARIABLE
描述参数 PACKAGE
描述类、接口(包括注解类型) 或enum声明 TYPE
1.8版本开始,描述类、接口或enum参数的声明 TYPE_PARAMETER
1.8版本开始,描述一种类、接口或enum的使用声明 TYPE_USE

格式: @Target(value=ElementType.TYPE)

1.	import java.lang.annotation.ElementType;  
2.	import java.lang.annotation.Target;  
3.	//可以 一个 或 多个 
4.	//@Target(value={ ElementType.TYPE}) 一个
5.	@Target(value={ElementType.METHOD,ElementType.TYPE}) // 多个 
6.	public @interface MyAnnotation {  
7.	    String value();  
8.	}  
  1. @Target 表示需要在什么级别保存该注释信息,用于描述注解的生命周期
作用
在源文件中有效(即源文件保留) SOURCE
在class文件中有效(即class保留) CLASS
在运行时有效(即运行时保留) RUNTIME

格式: @Retention(RetentionPolicy.RUNTIME)

11.	import java.lang.annotation.ElementType;   
12.	import java.lang.annotation.Target;  
13.	  
14.	@Target(value={ElementType.FIELD})   
15.	public @interface RoleField {  
16.	    String name();  
17.	    String typeName();  
18.	    int lengthName();  
19.	}
  1. @Document 用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。它是一个标记注解,没有成员。
    格式; @Document
21.	import java.lang.annotation.Documented;    
22.	@Documented  
23.	public @interface RoleField {  
24.	    String name() default "街角" ;        
25.	} 
  1. @Inherited 用于表示某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。
    格式: @Inherited
27.	import java.lang.annotation.Documented; 
28.	@Documented  
29.	public @interface RoleField {  
30.	    String name() default "街角" ;        
31.	} 
上一篇:pta6-17(另类堆栈)


下一篇:11.2 JDK的元注解