Class类
由于Class类没有公共构造方法,所以创建Class的对象的方法有以下几种:
1.通过Class.forName静态方法返回Class类的一个实例
2.通过类名.class来获取一个Class类的实例
3.代码运行在非静态区,通过this.getClass()获取Class类的一个实例
Class对象既然是描述一个类,那么我们通过该Class的实例能够做什么事情?
1.获取类名
2.获取类的修饰限定符
3.获得一个类的属性
1).根据一个属性名获取一个属性的描述
2).获得一个类的公共的属性的描述
3).获取一个类的全部public属性的描述
4)根据一个属性名获取一个在类中声明的属性的描述
5)获取所有在类中声明的属性的描述
4.获取一个类的方法
根据一个方法的名字获取类中的一个public的方法的描述
获取所有在类中式public的方法的描述
根据一个方法名获取在类中声明的一个方法的描述
获取所有在类中声明的方法的描述
返回cls所代表的类的实例
cls.getMethod(name,parameterTypes)
cls.getMethods()
cls.getDeclaredMethod(name,paeameterTypes)
cls.getDeclaredMethods
Field类
获取其属性
使用Filed类的一个实例,来描述cls类的实例中一个属性
获取属性的名字
获取属性的类型
获取属性的限定符
暴力设置:设置field的访问:field。setAccessible(true)
Method类
通过cls.get DeclaredMethod获取Method对象
获取方法名
方法的参数类型 Clss[] paraType = m.getParameterTypes();
方法的返回值类型
获取方法的修饰符 int modifiers = m.getModifiers();
方法是可以执行的,使用invoke执行methid对象所表示的方法m.invoke(obj,args);
使用反射相关类,为对象p设置name属性的值
设置器的形参和属性的类型应当一致
相当于P方法调用setName方法