junit
/**
* junit 单元测试
* 黑盒:给输入值 看程序 是否输出期望值
* 白盒测试:junit 管住程序的具体流程
* junit cn.itcast.test包名 独立运行 方法名一一对应 加注解 不建议有参数 导入junit的依赖
*/
反射
反射集中案列
/**
* 反射案例 写一个“框架”在不改变任意代码的情况下 可以创建任意类的对象 并且执行其中的任意方法
* 配置文件
* 加载 读取
* 反射 加载类 进内存
*/
public class FansheTest {
public static void main(String[] args)throws Exception {
//可以创建一个对象 执行任意的方法
/**
* 框架 不能改变该类的任何代码 可以创建任意类的对象 执行任意的方法
*
* person p = new Person;
* p.sleep();//弊端 半成品 代码会改变
*/
//加载配置文件
//1.1创建properties 对象
Properties properties =new Properties();
//1.2加载配置文件 转换为一个集合
//1.2.1获取class目录下的配置文件
ClassLoader classLoader = FansheTest.class.getClassLoader();//类加载qi
InputStream resourceAsStream = classLoader.getResourceAsStream("pro.properties");//配置文件
properties.load(resourceAsStream);
//获取配置文件对应的数据
String className = properties.getProperty("className");
String methodName = properties.getProperty("methodName");
//反射 加载该类进内存
Class aClass = Class.forName(className);
//创建对象
Object o = aClass.newInstance();
//获取方法对象
Method method = aClass.getMethod(methodName);
//执行方法
method.invoke(o);
}
}
配置文件
注解
* //注解 jdk1.5之后 声明程序
* 编译检查 @Override 编译检查 是否父类重写的方法
* jdk 基本的内置注解@Override @Deprecated 标注的内容以过时
* @SupperssWarnings 压制警告 一般传递参数all
* 自定义注解
* 注解的本质 就是一个接口 该接口默认集成Annotation接口
*
* 接口中的抽象方法 、
* 属性的返回值类型 基本的数据类型 string 枚举 注解
* 元注解:@Target 注解能够作用的位置 @Retention 描述注解保留的阶段