今日内容
- Junit单元测试(如何编写测试类的代码和主方法)
- 反射(后期学习框架的灵魂)
- 注解
Junit使用步骤
- 定义一个测试类(也叫测试用例)
建议:测试类名:被测试的类+Test
包名:xxx.xxx.test - 定义测试方法(可以独立运行)
建议:方法名:test+测试的方法名
返回值:void
参数:空参 - 给方法加上 @Test 注解
- 导入Junit依赖环境 不然步骤3会报错
- 判断结果是否正确 使用Assert类中的静态方法进行判断
@Before 和 @After 是在测试方法运行前和运行后都会被执行的 一般用于IO操作的资源申请和释放
反射(框架 设计的灵魂)
框架:是一个半成品的软件 简化代码
反射机制概念:将 类的各个组成部分 封装为其他的对象
好处:1.可以在程序运行过程中操作这些其他对象 2.可以提高程序的可扩展性
Java代码运行分为三个时期:
- IDE(集成开发环境)编写.java .java通过javac命令编译成.class(字节码文件) 【Source源代码阶段】【存储在硬盘上】
- 对于.class文件经过 类加载器(ClassLoader)加载到内存中 形成一个Class类对象
这个对象主要包含三部分:成员变量Fields[]数组,构造方法Constructor[]数组,成员方法Methods[]数组 【Class类对象阶段】【内存中】 - new 类名称 => 创建对象 【Runtime运行时阶段】【内存中】
获取Class类对象的三种方式:
- 对于【Source源代码阶段】:Class.forName(“全类名”) 将字节码文件.class手动加载到内存中
- 对于【Class类对象阶段】:类名.class 通过类名属性获取
- 对于【Runtime运行时阶段】:对象.getClass()方法获得 .getClass()是Object类(祖宗类)的方法
【结论】同一个字节码文件.class在一次程序运行过程中,只会被加载到内存一次,所以上述三种方式获得的Class对象的地址相等
反射主函数
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
@MyPro(className = "JavaWeb.day02.Person", methodName = "eat")
public class ReflectDemo {
public st