反射之方法调用
1.通过反射 调取属性 并赋值然后调用

①先获取class类对象(反射的源头);
②调用newInstance方法;创建一个实体类对象(因为属性是一个确切的对象拥有的,除非是静态属性)
③调用getDeclareField方法,后面的参数就是具体的属性名;
!记得设④用获取的属性,调用setAccessible方法,确保属性可访问(如果权限不够就会报错)
⑤调用set方法,第一个属性是需要赋值的对象,第二个属性是需要赋的具体值;
⑥调用get方法,参数是需要从哪个对象中调出此属性;
2.通过反射 调取方法

①还是先获取class类对象(反射的源头);
②调用newInstance方法;创建一个实体类对象(因为方法也是一个确切的对象拥有的,除非是静态方法)
③class对象,调用getDeclareMethod后面的 第一个参数是:方法名字; 其它参数是:参数列表中参数的类型,记得转化为class类;
!④获取到方法之后还是记得调用setAccessible方法,把方法设置为可访问的(防止权限不够报错)
⑤获取的方法调用invoke 第一个参数:调用方法的对象;其它参数:就是为方法的参数赋值;
⑥调用invoke后会有返回值,返回值就是调用对象中方法的返回值,如果没有,返回值就是null;
3.如何 调用静态方法

①老规矩还是先获取class类对象(之前说过反射可以加上泛型,不加默认object类型);
②class对象,调用getDeclareMethod方法,填上方法名和参数列表类型;
③!!!还是调用setAccessible方法设置保证可访问;
④获取到的方法调用invoke,后面填掉用对象的位置时就可以填null(因为静态方法在加载类的时候就加载了)或则填friend.class(意思大概就是和平时类名.静态方法差不读多)

浙公网安备 33010602011771号