元注解
开发工具与关键技术:myEclipse javaEE
作者:街角
撰写时间:201806027
元注解的作用就是负责注解其他注解。
Java定义了4个标准的 meta-annotation类型,
它们被用来提供对其它 annotation 类型作说明。
有以下四种;
@Target,@Retention, @Document,@Inherited
- @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. }
- @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. }
- @Document 用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。它是一个标记注解,没有成员。
格式; @Document
21. import java.lang.annotation.Documented;
22. @Documented
23. public @interface RoleField {
24. String name() default "街角" ;
25. }
- @Inherited 用于表示某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。
格式: @Inherited
27. import java.lang.annotation.Documented;
28. @Documented
29. public @interface RoleField {
30. String name() default "街角" ;
31. }