- 注解定义
注解是一种能被添加到java代码中的元数据,类、方法、变量、参数和包都可以用注解来修饰。注解对于它所修饰的代码并没有直接的影响。
简单的来说,注解就是一种标记,可定义在类/方法/变量/参数/包,在程序编译或者运行的时候,会检测到这些标记,从而进行特殊的标记处理。
-
使用场景
Java自定义注解一般使用场景为:自定义注解+拦截器(比如说 登陆 拦截),自定义注解+AOP(在实现日志的打印) -
Demo
import java.lang.annotation.*;
/*@Retention:自定义注解"生命力"
SOURCE:注解将被编译器忽略掉
CLASS:注解将被编译器记录在class文件中,但在运行时不会被虚拟机保留,这是一个默认的行为
RUNTIME:注解将被编译器记录在class文件中,而且在运行时会被虚拟机保留,因此它们能通过反射被读取到
*/
/*@Target:用于表示修饰的类型
TYPE:类,接口(包括注解类型)或枚举的声明
FIELD:属性的声明
METHOD:方法的声明
PARAMETER:方法形式参数声明
CONSTRUCTOR:构造方法的声明
LOCAL_VARIABLE:局部变量声明
ANNOTATION_TYPE:注解类型声明
PACKAGE:包的声明
*/
/*
@Documented:被用来指定自定义注解是否能随着被定义的java文件生成到JavaDoc文档中
*/
/*此外,还有一个@Inherited注解,他的作用是 如果注解写在了父类的声明部分,那么子类的声明部分也能自动添加注解,但是该注解只针对@Target(value = {ElementType.TYPE})的情况下
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(value = {ElementType.METHOD})
@Documented
//@Inherited
public @interface FirstAnnotation {
//这里的接口权限必须为public,不写的话默认为public
String name();
int age() default 12;
}
- 后记
本章节只是简单的记录下 自定义注解的创建与解析。