对于反射中的invoke()方法的理解-java技术

  • 时间:
  • 浏览:379
  • 来源:恰卡网

点击上方“后端技术精选”,选择“置顶公众号”

技术文章第一时间送达!

作者:码上猿梦

cnblogs.com/daimajun/p/6545533.html

(点击即可跳转阅读)

1.SpringBoot内容聚合

2.面试题内容聚合

3.设计模式内容聚合

4.排序算法内容聚合

5.多线程内容聚合

先讲一下java中的反射:

反射就是将类别的各个组成部分进行剖析,可以得到每个组成部分,就可以对每一部分进行操作。在比较复杂的程序或框架中来使用反射技术,可以简化代码提高程序的复用性。

讲的是Method类的invoke()方法。

既然是讲invoke方法,那就不讲怎么使用反射了,代码上来先:

packageonline;importjava.lang.reflect.Constructor;importjava.lang.reflect.InvocationTargetException;importjava.lang.reflect.Method;importorg.junit.Test;publicclassMsym{publicvoidtest(String[]arg){for(Stringstring:arg){System.out.println(string);}}@Testpublicvoiddemo1()throwsException{//获取字节码对象Classclazz=(Class)Class.forName("online.Msym");//获取一个对象Constructorcon=clazz.getConstructor();Msymm=(Msym)con.newInstance();String[]s=newString[]{"aa","bb"};//获取Method对象Methodmethod=clazz.getMethod("test",String[].class);//调用invoke方法来调用method.invoke(m,s);}}

测试会报错:

红色框框显示是参数错误,test方法需要是字符串数组啊,我传递也是字符串数组,怎么就不对了??

让我们来看一下invoke方法:

invoke方法的参数,一个是Object类型,也就是调用该方法的对象,

第二个参数是一个可变参数类型,这个可变参数类型怎么能传递给一个数组类型呢?一个是多个参数。一个是一个数组参数,显然参数的个数不匹配,怎么解决呢?

解决办法就是将可变参数变成一个参数:

  • 将传递进去的s强转为Object类型

  • 将s重新包装成一个Object数组

测试一下:

结果可行。

看到这里了,关注一个?

猜你喜欢

SEO优化:seo正规网站优化技术

经过正规查找引擎优化技能做网站排名,是可取的网站优化办法,关于大中型网站来讲,尤为如此。相关的SEO教程是海量的,本文对相关操作点做一个汇总。别的,经过研讨百度算法研讨相关软件做排名也有效果,乃至效果很强悍,但只需少部分能把握到。 太之云:www

2020-04-09

网站要升级改版了 怎样用SEO技术避免大量死链出现?

从简单的展示型网站到营销型网站,从营销型网站到搭建移动网站对于已经运营了十年以上的网站来说,最为揪心的就是每一次升级改版,时代的变化,技术的日新月异,网站运营一段时期后必须要进行改版,而在网站升级改版过程中,会出现大量死链,那么如何利用SEO

2020-04-09

SEO爆破技术,激发你的思维!

SEO排名爆破技术,一个贯穿SEO系统的公式,这篇内容不算新了,不过现在依然很受用,正确的思维导向永远不过时,至少我是这么觉得。之前很多人表示这个内容是在炒作,炒作不炒作与我无关,我保留意见。不过我一向的态度都是:任何东西都有其价值,不能发现价

2020-04-09