注解

来源:互联网 发布:删除mac管理员账户 编辑:程序博客网 时间:2024/05/30 20:08

注解相关的类位于java.lang.annotation包下:
这里写图片描述

1.元注解:

  1. 作用:对其他annotation类型作说明;
  2. 分类:
1. @Target2. @Retention3. @Documented4. @Inherited

@Target:
说明Annotation所修饰的对象范围,官方文档也作了说明:
这里写图片描述
Annotation所修饰的内容由枚举ElementType决定:

type anno TYPE Class, interface (including annotation type), or enum declaration(类, 接口, 注解, 枚举) FIELD Field declaration (includes enum constants) (变量,枚举常量) METHOD 方法 PARAMETER 方法参数 CONSTRUCTOR 构造方法 LOCAL_VARIABLE 本地变量 ANNOTATION_TYPE Annotation PACKAGE 修饰包名 TYPE_PARAMETER 方法参数类型 TYPE_USE anno

@Retention:
这里写图片描述

            enum RetentionPolicy
enum anno SOURCE 注解将会被编译器丢地 CLASS 注解被编译器记录在class文件中,但是在VM的运行时期无效 RUNTIME 注解被记录在class文件中,并且在运行时期有效,所以他们可能通过反射用到

@Documented:
@Inherited:

2.自定义注解:

使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节, 在定义注解时, 不能继承其他的注解接口. @interface用来声明一个注解, 其中每一个方法实际上是声明了一个配置参数, 方法的名称就是参数的名称, 返回值类型就是参数的类型.

1.定义注解的格式:
public @interface 注解名  
2.注解参数可支持数据类型:
1. 所有的基本数据类型;2. String类型;3. Class类型;4. enum类型;5. Annotation类型;6. 以上所有类型的数组;
3.Annotation类型里面的参数设置:
  1. 只能用public或default这两个访问权修饰
  2. String value()的参数成员为String;
  3. 如果只有一个参数成员, 最好把参数名称设为”value”,后加小括号;
0 0
原创粉丝点击