Junit
概念: 测试每个类中的方法是否能够顺利执行。从而保证代码的稳定性 使用步骤
新建测试类,类名是XXTest 在测试类中新建测试方法,不能被static修饰,并且无参无返回值 给方法上加@Test注解 alt+enter 引入junit4 选中方法右键执行
常见注解:@Test 表示要测试的方法,@Before 会在测试方法之前执行,一般用于加载资源,@After 会在测试方法之后执行,一般用于释放资源
反射
获取字节码文件对象的3种方式
forName(全类名) 类名.class 对象名.getclass()
反射的使用步骤
先获取字节码对象 获取描述器(consructor,field,method) 暴力反射设置访问权限 生成对象,调用方法,操作成员变量
生成对象的操作Class clazz = Person. class ;
Constructor constructor = clazz. getDeclaredConstructor ( ) ;
constructor. setAccessible ( true ) ;
Object obj = constructor. newInstance ( ) ;
System. out. println ( obj) ;
调用对象的方法Person person = new Person ( ) ;
Class clazz = Person. class ;
Method method = clazz. getDeclaredMothod ( "eat" , String. class )
mothod. setAccessible ( true ) ;
mothod. invoke ( person, "apple" ) ;
修改成员变量的属性Class clazz = Person. class ;
Field field = clazz. getDeclaredField ( "name" ) ;
field. setAccessible ( true ) ;
field. set ( person, "lina" ) ;
.通过反射如何操作对象属性public class Demo {
public static void main ( String[ ] args) {
Properties properties = new Properties ( ) ;
properties. load ( Demo. class . getClassLoader ( ) . getResourceAsStream ( "config.properties" ) ;
String className = properties. getProperty ( "className" ) ;
String methodName = properties. getProperty ( "methodName" ) ;
Class clazz = Class. forName ( className) ;
Object obj = clazz. newInstance ( ) ;
Method method = clazz. getDeclaredMethod ( methodName) ;
method. setAccessible ( true ) ;
method. invoke ( obj) ;
}
注解
注解:就是一个标记,这个标记可以作用在类上,方法上等。程序判断有没有注解来完成指定的功能 元注解:描述注解的注解 @Target(ElementType.METHOD),@Retention(RetentionPolicy.RUNTIME) 以后定义注解这个元注解必须要加上。 如何定义注解:
- public @interface 注解名{
数据类型 属性名( ) deault 默认值;
}
如果有默认值,那么在使用注解的时候可以不给该属性赋值 如果在使用注解的时候只有一个属性value,那么在赋值的时候可以直接赋值@注解名(“值”) 如果是数组类型,并且只需要赋值一个数据,可以省略{}