1.黑盒测试和白盒测试的区别?
黑盒测试无需编写代码,只需给输入值,测试程序能否输出正确的值
白盒测试需编写代码进行测试,关注程序的执行过程,更加详尽的测试
2.什么是反射?反射在程序中的应用场景,我们为什么要使用反射?
将一个类的各个部分封装成为对象(构造方法封装成构造器对象,成员方法封装成方法对象,成员变量封装成字段对象)的行为叫反射;
应用场景:反射是框架设计的灵魂,使用反射可以在程序运行时创建对象,修改对象内容等
使用反射的好处:
1.实现解耦,提高程序的可拓展性;
2.可以在程序运行过程中,操作这些对象
3.获取 Class对象有几种方式?他们的用途都在哪?
a.Class.forName(全类名),多用于使用配置文件的情况,将类名定义在配置文件中,读取配置文件得到全类名;
b.对象名.getClass(),getClass()是Object类中的方法,任何类都继承了此方法
c.类名.class,通过类名的属性class获取,多用于参数的传递
4.如何获取Class对象中被私有的成员变量对象和成员方法对象?
使用Class对象的getDeclareField()方法获取对象的私有成员变量;
使用Class对象的getDeclareMethod()方法获取对象的私有成员方法.
5.注解在程序中都有哪些用途?
a.编写文档:通过代码里表示的注解生成文档(doc文档)
b.代码分析:通过注解对代码进行分析
c.编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查
6.什么是元注解?
用于描述注解的注解叫元注解,
元注解的种类:
@Target(ElementType.xxxx): 限定注解可以使用的位置:
xxxx的取值:
TYPE:可以作用于类上
METHOD:可以作用于方法上
FIELD:可以作用于成员变量上
@Retention(RetentionPolicy.xxxx): 描述注解被保留的阶段
SOURCE 写源码时
CLASS 编译成class后
RUNTIME 一直到运行期都保留
@Documented:描述注解是否被抽取到api文档中
@Inherited:描述注解是否被子类继承
|