java 静态 反射_java 反射之操作静态Method

a4c237fb5d85

null1524401983342.jpg

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

利用反射调用静态方法

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

代码示例 :

a4c237fb5d85

QQ截图20180505111426.png

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

测试代码:

a4c237fb5d85

QQ截图20180505111555.png

a4c237fb5d85

QQ截图20180505111636.png

a4c237fb5d85

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"}});

}

结果如下:

a4c237fb5d85

QQ截图20180505173843.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值