反射之方法调用

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(意思大概就是和平时类名.静态方法差不读多)

 

posted @ 2021-06-18 19:42  天庭保安猪八戒  阅读(130)  评论(0)    收藏  举报