获取字节码文件对象
方式一 、
Class clazz = Person. class
方式二:
对象名.getClass() ;
举例:
Class clazz
new Person() .getClass() ;
方式三:
Class. forName ("类的全路径名") ;
举例:
Class clazz = Class. forName ("com. domain. Person") ;
Class类中的方法?
public object newInstance(): 创建对象
2.如何获取构造方法对象
public Constructor getConstructor (Class. .. parameterTypes) :获取公共的构造方法
public Constructor[] getConstructors(): 获取所有的公共的构造方法
public Constructor getDeclaredConstructor (Class. . . parameterTypes):获取构造方法
public Constructor[ ] getDecl aredCons tructors ():获取所有的构造方法
Constructor类中的方法?
public T newInstance (object... initargs): 创建对象
public void setAccessible (boolean flag) :
反射的对象在使用时应该取消Java语言访问检查
一般我们传递的参数都是true
暴力反射:使用反射获取私有成员的时候,使用普通的对象是获取获取不到的,必须使用
带declared的方法,而且需要设置setAccessible,值true可以获取到
3.如何获取字段(成员变量,属性)对象
public Field getField (String name) :1获取公共的成员变量
public Field[] getFields(): 获取所有的公共的成员变量
public Field getDeclaredField(String name): 获取成员变量
public Field[] getDeclaredFields(): 获取所有的成员变量
Field类中的方法?
public void set (Object obj, Object value): 给具体的哪个对象赋什么值
public void setAccessible (boolean flag) :
反射的对象在使用时应该取消Java语言访问检查
般我们传递的参数都是true
一般我们传递的参数都是true
暴力反射:使用反射获取私有成员的时候,使用普通的对象是获取获取不到的,必须使用
带declared的方法,而且需要设置setAccessible,值true可以获取到
4.如何获取普通的成员方法对象
public Method getMethod (String name, Class... parameterTypes): 获取公共的方法对象
public Method[j getMethods(): 获取所有的公共的方法对象
public Method getDeclaredMe thod (String name, C1ass... parameterTypes):获取方法对象
public Method[] getDeclaredMethods(): 获取所有的方法对象
Method类中的方法?
public object invoke (object obj ,0bject... args)
返回值:就是调用方法之后的返回值