1.黑盒测试和白盒测试的区别? 黑盒测试不需要写代码,给输入值,看程序是否能够输出期望的值。
白盒测试需要写代码的。关注程序具体的执行流程。
2.什么是反射?反射在程序中的应用场景,我们为什么要使用反射?
反射最重要的特点是通过方法找对象,在代码编写完成后,进入Class对象时,将代码分为成员变量,构造方法,成员方法三个数组,封装为对象,可以获取对象的所有信息;
应用场景:在框架运用上最为常见,代码已经完成,不允许我们修改代码,而我们需要调用成员变量或者成员方法,这时候就要运用到反射来获取对象信息,再通过对象信息生成对象,进行方法进一步的调用,这样的话不需要修改代码我们就能够获得对象的信息以及调用其中的方法.
3.获取 Class对象有几种方式?他们的用途都在哪?
1. Class.forName("全类名"):将字节码文件加载进内存,返回Class对象,多用于配置文件,将类名定义在配置文件中。读取文件,加载类
2. 类名.class:通过类名的属性class获取, 多用于参数的传递
3. 对象.getClass():getClass()方法在Object类中定义着。 多用于对象的获取字节码的方式
4.如何获取Class对象中被私有的成员变量对象和成员方法对象?
Field[] getDeclaredFields() 和Field getDeclaredField(String name) 获取所有的成员变量,不考虑修饰符
Method[] getDeclaredMethods() 和 Method getDeclaredMethod(String name, 类<?>... parameterTypes) 获取所有的成员方法,不考虑修饰符
5.注解在程序中都有哪些用途?
①编写文档:通过代码里标识的注解生成文档,类似API文档②代码分析:通过代码里标识的注解对代码进行分析【使用反射】③编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查,,比如@Override
6.什么是元注解?
元注解就是对注解进行注解的注解
7.文件从编译到运行可以分为哪三个时期?
分为Source源代码时期 Class类对象时期 Runtime运行时阶段
8.思考:想让一个类加载进内存,有几种方式?
有两种方式,
1.将需要加载的类放入配置文件中,在程序中加载读取配置文件,可以通过反射来加载类文件进入内存;
2.通过解析注解的方式,将需要加载的类信息放入注解中,通过传递参数的方式获取,* getAnnotation(Class),就是在内存中生成了一个该注解接口的子类实现对象
|