注解:
自定义注解:
格式:
元注解;
public @interface 注解名称{
属性列表
}
本质:
注解本质上就是一个接口该接口默认继承Annocation接口;
属性:
接口中可以定义的成员方法(抽象方法);
要求:
1.属性的返回值类型:
基本数据类型;
String;
枚举;
注解;
以上类型的数组;
2.定义了属性,在使用时需要给属性赋值;
如果定义属性时,用default关键字给属性默认初始化值,则使用注解时可以不用给属性赋值;
如果只有一个属性需要赋值,且属性的名称是value,则value可以省略,直接定义即可;
数组赋值时,值使用{}包括,如果数组中只有一个值,{}可以省略;
元注解:
@Target:描述注解能够作用的位置;
ElementType取值:
TYPE:可以作用于类上;
METHOD:可以作用于方法上;
FIELD:可以作用于成员变量上;
@Rentention:描述注解被保留的阶段;
RententionPolicy.RUNTIME;
RententionPolicy.RESOURCE;
RententionPolicy.CLASS;
@Documented:描述注解是否被抽取到Api文档中;
@Inherited:描述注解是否被子类继承;
在程序使用(解析)注解,获取注解定义的属性值;
1.获取注解定义的位置的字节码文件对象(Class,Method,Field);
2获取指定的注解(get Annocation(Class));
3.使用注解中的抽象方法获取配置的属性值;
简单的测试框架
当主方法执行后,会自动执行被检测到的所有方法(加了注解的方法),判断方法是否有异常,记录到文件中;
1.创建被测试的对象;
2.获取该对象字节码文件对象;
3.获取其所有方法;
4.遍历方法,判断是否有注解(method.isAnnotationPresent(注解.class));
5.如果有就执行;
6.捕获异常并写入文本文件;
小结:
1.以后大多数时候,我们会使用注解,而不是自定义注解;
2.注解给谁用:
编译器;
给解析程序用;
3.注解不是程序的一部分,可以理解为一个标签;
数据库:
基本概念:
1.数据库的英文单词:DataBase,简称:DB;
2.什么是数据库;
用于存储和管理数据仓库;
3.数据库的特点:
持久化储存数据,其实数据库就是一个文件系统;
方便存储和管理数据;
使用了统一的方式操作数据库---SQL;