java 反射之操作静态Method

null1524401983342.jpg

一张来自非洲的微笑,一首百听不厌的老歌,还有每天穿梭在网络间的各位老铁们,上节我们讲了反射的Method,遗漏了点东西,在这里将它补上,若我们利用反射调用静态方法时又如何呢?

利用反射调用静态方法

我们知道,静态方法不属于任何对象,只属于类本身,直接上代码

代码示例 :
QQ截图20180505111426.png

这是我定义的一个Person类,并定义一个静态方法,我们来看测试代码:

测试代码:
QQ截图20180505111555.png

QQ截图20180505111636.png

QQ截图20180505111907.png

以上是我们代码的测试和结果,最后一张截图是API中method类中的invoke的官方解释,允许我们将obj参数设置为null,前提是该方法是静态方法。
接下来我们来看看利用反射调用数组的可变参数,直接上代码:

代码如下:
class emp {
public static void work(int...arr){
    System.out.println(Arrays.toString(arr));
 }
 public static void work(String ...arr) {

   System.out.println(Arrays.toString(arr));
   }
}

上述代码中,我们通过创建emp类,并创建了两个静态的可变参数的方法,来看测试代码:

代码如下:
     利用反射调用数组参数(可变参数)
     public class StaticMethodDemo {
     public static void main(String[] args)throws Exception {
     若数组为基本数据类型
     Class clazz = emp.class;
    Method method = clazz.getDeclaredMethod("work", int[].class);
    method.invoke(null,new int[]{1,2,3,4,5});

    若数组为引用类型
    Method method1 = clazz.getMethod("work", String[].class);
    将它包装成一个 Object[]数组
   method1.invoke(null,new Object[]{new String[]{"A","b","C"}});

  }
结果如下:
QQ截图20180505173843.png

这就是我们利用反射来操作静态方法,以及数组的可变参数基本过程。

你可能感兴趣的:(java 反射之操作静态Method)