注解和注释区别
注释
:对程序中的代码解释说明的信息。它主要是给开发者看的,帮助开发者阅读程序代码。注解
:属于Java代码,主要是在程序运行的时候,进行其他的参数配置的,主要是在程序运行过程中,通过反射技术获取参数。注解是给程序使用的。
注解的定义和使用模板
注解:它是Java中的类。可以由开发者自己定义。编译之后,也会生成对应的class文件。
定义格式:
修饰符 @interface 注解名{
}
使用格式:
@注解名;
例如:junit测试中的 @Test
复写方法中的@Override
自定义注解
注解可以书写的位置
定义的注解,可以书写在类的不同位置:
类上、成员变量上、成员方法、构造方法等位置。
在自定义注解上使用@Target 声明自定义的注解可以出现的位置,具体的位置需要使用JDK中提供的类(ElementType)来指定。
ElementType中提供的静态的成员变量,这些变量表示注解可以存在的位置:
ElementType.CONSTRUCTOR:当前的注解可以书写在构造方法上
ElementType.METHOD:当前的注解可以书写在方法上
ElementType.FIELD:当前的注解可以书写在成员变量(字段)上
ElementType.TYPE:当前的注解可以书写在类或接口上
注解生命周期
由@Retention 声明自己的注解可以存活的时间
具体的存活的时间需要通过RetentionPolicy 中提供的值。
RetentionPolicy.SOURCE:注解只能存在于源代码中,编译之后生成了class文件中就没有注解。
RetentionPolicy.RUNTIME:注解一直存在到程序运行过程中,可以通过反射获取注解信息。
RetentionPolicy.CLASS:注解在编译之后,可以被保存到class文件中,但是当JVM加载这个class文件的时候注解就被丢弃。
一般我们自己定义注解,都是希望在程序运行过程中获取注解中的数据信息,因此我们需要将注解声明为 运行时的注解。
注解中的成员变量
注解定义的变量格式:数据类型 变量名();
基本案例
自定义注解
1 | import java.lang.annotation.ElementType; |
自定义注解的使用
1 | public class UseAnnotation { |
经典使用案例(mysql连接驱动)
1 | import java.lang.annotation.ElementType; |