Java自定义注解

一、概述
jdk5之后提供了一个特性,和类、接口同级
注解本质就是一个接口,接口中可以有常量和抽象方法,抽象方法在注解中就称之为注解属性
示例:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AccessTokenVerify {
	AccessTokenVerifyEnum value() default AccessTokenVerifyEnum.APP;
}
public enum AccessTokenVerifyEnum {
    APP("app"),
    WEB("web");
    private String message;
    AccessTokenVerifyEnum(String message) {
        this.message = message;
    }
}
二、jdk提供的注解
@Override 描述方法的重写
@SuppressWarnings         抑制警告,值有好多,all抑制所有的警告
@Deprecated 标记过时
三、注解属性的类型
String
Class
Annotation
Enum
以及以上类型的一维数组
注意:注解如果有属性,使用注解的时候必须赋值(除非这个注解属性有默认值)
四、注解格式
@interface 注解名{属性}
赋值的格式:
@注解名(属性名=属性值)
若注解类型为数组,且只有一个值的时候,可以有两种写法
方式1:
属性名 = { 值 }
方式2:
属性名=属性值
若属性名为value的时候,且只需要为这个value属性赋值的时候,value可以省略
五、元注解
定义在注解上的注解
@Retention  规定注解保留到什么阶段,值为RetentionPolicy的三个枚举值如下
SOURCE:只在代码中保留,在字节码文件中就删除了
CLASS:在代码和字节码文件中保留
RUNTIME:所有阶段都保留

@Target 规定注解作用在什么上面,值为ElementType的枚举值如下
TYPE:作用在类、接口上面
METHOD:作用方法上面
FIELD:作用字段上面
六、注解的作用
编译检查
替代配置文件
定义注解(元注解:注解上的注解)
分析代码(用到反射)
七、注解案例
案例1:使用注解反射优化BaseDao
(待续)
案例2:使用注解开发JDBC类
步骤分析:
①自定义一个注解JDBCInfo
添加元注解:
在程序运行的时候使用  @Retention
只能作用在方法上  @Target
添加注解属性
String driverClass() default "com.mysql.jdbc.Driver";
String url();
String username() default "root";
String password();
②在jdbcutils工具类中提供一个getConnection,在方法上面添加一个注解 @JDBCInfo(...) 
getConnection方法需要进行的操作:获取注解上的四个属性值
获取字节码文件
获取该方法上的注解
获取注解的值
③运行的时候可以通过getConnection获取一个连接

猜你喜欢

转载自blog.csdn.net/zhou870498/article/details/80071316