一.Junit单元测试
1.概述
是一个单元测试框架,可以代替main方法去执行其他的方法
2.使用
a.导入jar包
b.注解
@Test:单独执行一个方法
@Before:在@Test之前执行,有几个@Test就有几个@Before
@After:在@Test之后执行,有几个@Test就有几个@After
二.类的加载机制
1.类的加载时机
a.new对象
b.new子类对象
c.执行main方法
d.调用静态成员
e.反射
2.类的加载机制
双亲委派
三.反射
1.概述
解刨class对象的技术
2.问题:能解刨class对象的什么呢?
a.解刨出成员变量:赋值
b.解刨出成员方法:调用
c.解刨出构造方法:new对象
3.作用
写出来的代码更灵活,更通用
4.获取Class对象
a.对象.getClass()
b.类名.class
c.Class.forName("类的全限定名")
5.反射构造
Constructor<?>[]getConstructors()->获取所有public的构造
ConConstructor<T> getConstructors(Class<?>... parameterTypes)->可以获取指定的public的构造
T newInstance(Object...initargs)->创建对象
Class类中的方法:new对象的快捷方式:T newInstance()->根据空参构造创建对象
Constructor<?>[]getDeclaredConstructors()->获取所有public的构造,包括private
ConConstructor<T> getDeclaredConstructors(Class<?>... parameterTypes)->可以获取指定的public的构造,包括private
void setAccessible(boolean flag)->修改访问权限
6.反射成员方法
Metohd[] getMethods()->获取所有public的方法,包括父类
Metohd[] getMethod(String name,Class<?>... parameterTypes)->获取指定的public的方法
Object invoke(Object obj,Object... args)->执行方法
Metohd[] getDeclaredMethods()->获取所有public的方法,包括pravite的
Metohd[] getDeclaredMethod(String name,Class<?>... parameterTypes)->获取指定的public的方法,包括pravite的
7.反射属性
Field[] getFields()->获取所有public的属性
Field[] getDeclaredFields()->获取所有属性,包括private的
Field[] getFields(String name)->获取指定的public的属性
ield[] getDeclaredField(String name)->获取指定属性,包括private的
void set(Object obj,Object value)->为属性赋值相当于set方法
Object get(Object obj)->获取属性值
四.注解
1.定义注解
public @interface 注解名{}
2.定义属性
a.数据类型 属性名()->此属性没有默认值,需要在使用注解的时候为其赋值
b.数据类型 属性名() default 值->此属性有默认值,如果有需要,还可以二次赋值
3.注解的使用
4.注解解析
5.元注解
a.概述
控制注解的注解
b.@Target:控制注解的使用位置
c.@Retention:控制注解的生命周期(加载位置)
五.枚举
1.定义
public enum 枚举类名{}
2.枚举值
3.构造
都是private修饰的
4.使用场景
表示对象的状态