一、Annotation是一个接口,程序可以通过反射来获取指定程序元素的Annotation对象,然后通过Annotation对象来取得注释里的元数据。
Annotation能为程序元素(类、方法、成员变量等)设置元数据,值得指出的是Annotation不能影响程序代码的执行。如果希望Annotation在运行 时起一定的作用,只有通过某种配套工具对Annotation中的信息进行访问和处理,访问和处理Annotation的工具统称为APT。
二、基本Annotation:@Override、@Deprecated、@SuppressWarnings。
三、自定义Annotation
格式:1.public @interface Test{}
2.public @interface Test{
String name();
int age();
}
使用带成员变量的Annotation时,需要为成员变量赋值
3.public @interface Test{
String name() default "youku";
int age() default 32;
}
使用成员变量有默认值的Annotation时,可以不赋值,如果赋值则会覆盖默认值。
根据Annotation是否带成员变量,我们可以分为两类:
1.标记Annotation:不带成员变量。
2.元数据Annotation:带成员变量。
四、提取Annotation的信息
1.getAnnotation(Class<T> annotationClass):返回该程序元素上存在的、指定类型的注释,如果该类型的注释不存在,则返回null。
2.Annotation[] getAnnotations():返回该程序元素上存在的所有注释。
3.boolean isAnnotationPresent(Class<? extends Annotation> annotationClass):判断该程序元素上是否包含指定类型的注释,存在返回true。
五、JDK的元Annotation
1.使用@Retention
2.使用@Target
3.使用@Documented
4.使用@Inherited
六、使用APT处理Annotation
APT是一种处理Annotation的工具,它可以根据源文件中的Annotation生成额外的源文件和其他文件,还会编译生成的源代码文件和原来的源文件,将它们一起生成class文件。
1.为了使用系统的APT工具来读取源文件中的Annotation,程序员必须自定义一个Annotation处理器。每个Annotation处理器都需要实现AnnotationProcessor接口,这个
接口中定义了一个"process"的方法,该方法是由APT调用Annotation处理器时将被用到的,一个Annotation处理器可以处理一种或者多种Annotation类型。
2.提供了Annotation处理器之后,还应该为该Annotation处理器提供一个处理工厂,处理工厂负责决定该处理器支持哪些Annotation,并通过getProcessorFor方法来生成
一个Annotation对象。
Annotation能为程序元素(类、方法、成员变量等)设置元数据,值得指出的是Annotation不能影响程序代码的执行。如果希望Annotation在运行 时起一定的作用,只有通过某种配套工具对Annotation中的信息进行访问和处理,访问和处理Annotation的工具统称为APT。
二、基本Annotation:@Override、@Deprecated、@SuppressWarnings。
三、自定义Annotation
格式:1.public @interface Test{}
2.public @interface Test{
String name();
int age();
}
使用带成员变量的Annotation时,需要为成员变量赋值
3.public @interface Test{
String name() default "youku";
int age() default 32;
}
使用成员变量有默认值的Annotation时,可以不赋值,如果赋值则会覆盖默认值。
根据Annotation是否带成员变量,我们可以分为两类:
1.标记Annotation:不带成员变量。
2.元数据Annotation:带成员变量。
四、提取Annotation的信息
1.getAnnotation(Class<T> annotationClass):返回该程序元素上存在的、指定类型的注释,如果该类型的注释不存在,则返回null。
2.Annotation[] getAnnotations():返回该程序元素上存在的所有注释。
3.boolean isAnnotationPresent(Class<? extends Annotation> annotationClass):判断该程序元素上是否包含指定类型的注释,存在返回true。
五、JDK的元Annotation
1.使用@Retention
2.使用@Target
3.使用@Documented
4.使用@Inherited
六、使用APT处理Annotation
APT是一种处理Annotation的工具,它可以根据源文件中的Annotation生成额外的源文件和其他文件,还会编译生成的源代码文件和原来的源文件,将它们一起生成class文件。
1.为了使用系统的APT工具来读取源文件中的Annotation,程序员必须自定义一个Annotation处理器。每个Annotation处理器都需要实现AnnotationProcessor接口,这个
接口中定义了一个"process"的方法,该方法是由APT调用Annotation处理器时将被用到的,一个Annotation处理器可以处理一种或者多种Annotation类型。
2.提供了Annotation处理器之后,还应该为该Annotation处理器提供一个处理工厂,处理工厂负责决定该处理器支持哪些Annotation,并通过getProcessorFor方法来生成
一个Annotation对象。
3.然后就可以使用APT工具来处理源文件了,APT工具位于JDK安装目录下的bin目录下,运行apt命令时可以使用-factory来指定处理器工厂类。