一、Java注解的定义
java注解有个英文的名字叫Annotation,有些人也称之为元数据,算是JDK里面引入的相对挺早的,他主要用于声明包、类、字段、方法、局部变量、方法参数等。比如我们最常见的注解就是“Override”注解,这个就是jdk里面的一个基本内置的注解。
二、如何自定义注解
java除了可以使用jdk里面内置的基本注解,当然还可以通过自定义注解的方式以便于实现自己的业务逻辑。
1.@Interface
开发者可以通过这个@Interface创建自己的注解,那么如何创建自己的注解呢,请看下面代码
首先我们来看@Rentention这个,这个具体描述的是什么意思呢,可以先看里面的参数,里面有个叫 RetentionPolicy.RUNTIME 顾名思义我们可以看出这个参数肯定跟运行时有一定关系的,这个参数时间上描述了这个注解的生命周期是运行时!除此之外呢RetentionPolicy里面还有其他参数的参数SOURCE、CLASS。做如下解释SOURCE使用该参数将会被编译器丢弃,CLASS主要修饰于Class文件里面的,在此着重讲RetentionPolicy.RUNTIME的参数。
2.@Target
在这里我们可以看到这里还有一个叫@Target的,这个主要还是表示注解的作用域,比如说上述的代码的作用域是修饰的是成员变量的(ElementType.FIELD),除此之外呢,ElementType还有另外的几个参数。
CONSTRUCTOR:用于对构造器的声明;
FIELD:用于对成员变量的声明,也包括枚举;
LOCAL_VARIABLE:用于对局部变量的声明;
METHOD:用于对方法进行声明;
PACKAGE:用于对包名的声明;
TYPE:用于对类、接口(包括注解类型)、枚举的声明。
三、如何使用自定义注解
还是以上面的例子为例,我们再写一个例子来说明这个注解应该如何使用
1.创建需要添加注解的类
由上述的代码可知,我自定义的是用于声明局部变量的注解,注解是运行时注解,这里我写了一个Test的bean。
2.从类中获取添加的自定义注解
这里我定义了一个Annotion的类有个test方法来获取Test这个类里面的成员变量对应的NoNull注解,这里涉及到JAVA反射的概念,后续文章中将会涉及到,这里不做过多描述。
到这里JAVA的注解相关的基本知识就讲解结束了,下一节将会讲解JAVA注解比这一节深层次一些的用法,有异议的小伙伴们可以留言哈!如果有什么错误的地方欢迎指正,该文章适合于JAVA初学者。