Ø 反射获取Class对象
Ø 三种方法获取
Class classz=对象.class;
对象 A=new 对象();
Class AA=A.getClass();
Class .forName("类的全路径");
类的加载器,将Class文件加载到虚拟机中,会有一个Class对象
而反射第一步就是获得class文件的字节码对象的Class对象
Ø 实例:
○ Class cs=Class.forName("类的全路径");
○ 默认的无参数的构造方法创建对象
○ Person P=cs.newInstance();
采用有参数的构造方法来创建对象�cs.getConstructor(String.class,Integer.class);//创建的是一个带(String,int)的对象
c.newInstance("参数1","参数2(Integer)");
Ø 获取属性(公有的)�cs.getField("属性名");//获得某一个属性
Cs.getFields();//获取所有的属性
Ø 获取所有的属性
○ Field field=cs.getDeclaredField("属性名");//获取一个属性(私有或者公有)
!!!必须设置成可以访问
Field.setAccessible("true");//设置可以访问
○ 使用:
§ Field.get(实例对象);//得到实例对象里的值
Ø 获取方法
○ M=Class对象.getDeclaredMethod("方法名");
○ M.setAccessible("true");设置可以访问
执行方法:
M.invoke(实例对象);
获取带参数的方法
Cs.getDeclaredMethod("方法名",参数的Class对象);
M.invoke("执行的对象","参数");