反射与Junit
代码规范
包名:全小写,公司域名倒写.模块名.组件名
接口:首字母大写通常首字母用"I",表示这个是一个接口
接口实现类:通常去掉首字母的"I"然后结尾以"Impl"结尾
类名:首字母大写,名词。遵循驼峰表示法
方法名:首字母小写。用较为清晰的语义表示,遵循驼峰表示法
变量名:首字母小写。遵循驼峰表示法
常量名:全大写,每个单词用"_"分割
Junit
Junit是一个回归测试框架。Junit是程序员测试用的,这种测试是百合测试的一种。
Junit4.x针对java5之后的版本,使用注解(推荐)
Junit5.x针对java8之后的版本(若使用了java8的新特性要使用Junit5.x的版本)
测试类通常定义为XxxTest命名,不能直接使用Test命名会引起Test注解的冲突
测试方法是一个公共、无参、无返回值的方法,方法名建议使用test开头
在测试方法上需要添加一个@Test的注解否则不能使用
反射
每一个类都有字段、方法、构造器,所有的类都会生成字节码文件
反射就是通过字节码对象获取其中的字段、方法、构造器
如何获得Class对象
方法1
Class.forName("全限定名");
方法2
实例对象.getClass();
方法3
类.class
基础类型的Class对象与封装类型的联系
八大基础可以.class获取Class对象
所有的封装类型都有.Type这个静态属性,即获得基础类型的Class对象
Class与构造器相关的方法
方法 | 作用 |
---|---|
public Constructor getConstructor(Class<?>… parameterTypes) | 获得一个构造器(public修饰) |
public Constructor<?>[] getConstructors() | 获得多个构造器(public修饰) |
public Constructor getDeclaredConstructor(Class<?>… parameterTypes) | 获得一个构造器(任何修饰) |
public Constructor<?>[] getDeclaredConstructors() | 获得多个构造器(任何修饰) |
返回的对象是Constructor类该类可以通过newInstance()方法把获取的构造器进行实例
Class与方法相关的方法
方法 | 作用 |
---|---|
public Method getMethod(String name, Class<?>… parameterTypes) | 获得一个方法(public修饰) |
public Method[] getMethods() | 获得多个方法(public修饰) |
public Method getDeclaredMethod(String name, Class<?>… parameterTypes) | 获得一个方法(任何修饰) |
public Method[] getDeclaredMethods() | 获得多个方法(任何修饰) |
返回的对象是Method类该了可以通过invoke()方法运行方法不过参数需要填写一个实例对象
注:如果调用静态方法的时候可以不填实例对象
Class与属性相关的方法
方法 | 作用 |
---|---|
public Field getField(String name) | 获得一个属性(public修饰) |
public Field[] getFields() | 获得多个属性(public修饰) |
public Field getDeclaredField(String name) | 获得一个属性(任何修饰) |
public Field[] getDeclaredFields() | 获得多个属性(任何修饰) |
返回的对象是Field类该类可以通过get方法获取属性的值,也可以使用set方法进行赋值,可以将对象进行动态修改