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<emp> 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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,292评论 19 139
  • 1.文档流的概念指什么?有哪种方式可以让元素脱离文档流? 文档流:是默认定位方式,在文档流中元素框的位置由元素在h...
    泰格_R阅读 2,769评论 4 2
  • 在假期里,不管是孩子还是大人,都想跳出平时紧张的工作和学习,调整和放松紧绷的大脑和神经。因此出现了假期尽管时间充裕...
    吉他范儿阅读 480评论 0 1
  • [意识流] [黑蓝同人多cp] [作者脑洞太大] [如不接受多cp可跳着章节看,ex买火柴的小男孩1,2,3] [...
    烟温穆尘阅读 376评论 0 0
  • 生活总是此起彼伏的,上一刻惊的心累,下一刻喜的想哭,精彩绝伦,让我反复无常,此刻走过惊还在感慨喜的时候有点庆幸昨晚...
    And_Vivian阅读 212评论 0 0