我们搞一个单元测试的好处就在于
它可以一键进行成千上百个类同时进行测试
就算有一千个测试方法 我们也可以一键就跑完
因为这些测试方法是包含在一个测试类当中的
反射:
如: 拿到class文件的三种方式——
反射获取构造器对象:
反射获取成员变量:
反射获取方法对象:
拿到所有的方法对象:
由于这是反射 它可以暴力打开权限:
即使eat是私有的方法 反射可以用 如图的方式:
m这里是暴力打开的是第一个eat方法权限
下面这个是m2反射:
暴力反射第二个有参方法eat 即使是私有的也可以访问
总结:invoke方法中obj表示一个对象 args表示调用方法的参数(如果没有则不用写)
———————————————————————————————————————————
反射的作用:
——————————————————————————————————————————
我们可以通过反射直接进行添加黑马这个字符串
即使它的泛型是整形:如上图所示,,,,,
1.先用lists这个对象进行调用getClass()调用这个对象对应的class文件
2.拿到方法
3.invoke触发lists这个集合对象中的add方法执行。。。。。。。。。。
因为反射会擦拭这个泛型 所以可以直接添加字符串
——————————————————————————————————————————
拿到两者的class文件进行比较是否相同和地址是否相同
由此我们可以得出一个结论:
无论泛型是什么 只要是同一个类 那么它的class文件一定是相同的
故反射擦拭了泛型,,,,,,,,
模块地址信息:
1.创建一个学生类
2.创建一个老师类
3.设计一通用的框架类:这个通用的框架可以保存任意的对象
实现了不同的对象都可以进来使用这一个框架。。。
4.进行测试:
注解:
元注解:
我们这里规定只能注解方法和成员变量。。。。。。
注解Bookk:
使用元注解@Target表示可以注解哪些内容 TYPE表示类型 METHOD表示可注解的方法
@Retention表示注解的存活周期时长
使用注解的类:BookStore:
测试类: 使用@Test测试:
只有当有注解@Test时才可执行方法
如何实现这个上述愿望?如图下:自行自己设计一个测试类框架
动态代理:
重点:先初步认识一下 后续细讲。。。。。。。。。。。。
这里记录一下统计时间时的方法______:
当我们发现最后一条计时时间的语句前面已经有了return语句
那么我们只能把这个语句放到finally语句中去
finally语句中的语句表示我还没执行呢 返回语句原地不动 等finally执行完之后再执行
问题:
产生代理:
1.创建一个接口
2.创建一个类实现这个接口,这个类就是作为业务对象
创建一个测试类
3.创建一个代理类 ProxyUtil,作为代理对象
这里的参数我们通常是使用接口来写 相当于一种多态的形式。。
以后可以接任何通过实现接口创建的类对象
——————
我们这里业务对象的类型是什么,我们所创建的代理对象的类型就应该是什么。。。。
直接强制类型转化即可
如何搞一个代理对象:
好处:省略节省了大量的时间分析的代码,让前面的业务实现类的代码更加简洁
——————————————————————————————————————
改成泛型可接收任何类型



