java中invoke函数,java invoke方法

java中invoke函数,java invoke方法,深入解析Java中反射中的invoke()方法

最近复习了一下Java反射的使用,只知道Java反射中的invoke()方法,整理了一下,简化了一点,分享一下。有兴趣的可以看看。

先说java中的反射:

反射就是分析一个类别的各个组成部分,得到每个组成部分,然后对每个组成部分进行操作。

反射机制应用场景:逆向代码,动态生成类框架等。使用反射机制可以大大增强程序的可扩展性。

反射的基本步骤:先获取类对象,然后实例化对象,获取类的属性、方法或构造函数,最后访问属性,调用方法和构造函数创建对象。invoke()方法是用于执行指定对象的方法。

在复杂的程序或框架中使用反射技术可以简化代码,提高程序的可重用性。

是关于方法类的invoke()方法。

既然是关于invoke方法,那就不说怎么用反射了。代码首先出现:

在线打包;

导入Java . lang . reflect . constructor;

导入Java . lang . reflect . invocationtargetexception;

导入Java . lang . reflect . method;

导入org . JUnit . test;

公共类Msym {

公共void测试(String[] arg){

for (String string : arg) {

system . out . println(string);

}

}

@测试

公共void demo1()引发异常{

//获取字节码对象

class msym clazz=(class msym)class . for name(' online。msym’);

//获取一个对象

constructor con=clazz . get constructor();

Msym m=(Msym)con . new instance();

String[] s=new String[]{'aa ',' bb ' };

//获取方法对象

method method=clazz . get method(' test ',String[]。类);

//调用invoke方法来调用

method.invoke(m,s);

}

}

测试将报告一个错误:

红框显示是参数错误,测试方法需要是字符串数组。我传递了一个字符串数组,为什么是错的?

让我们来看看调用方法:

invoke方法的参数,其中一个是对象类型,即调用该方法的对象,

第二个参数是可变参数类型。如何将这种可变参数类型传递给数组类型?一个是多参数。一个是数组参数。很明显,参数个数不匹配。怎么解决?

解决方法是将变量参数改为参数:

将传递的s-strong转换为对象类型

将重新打包到对象数组中。

测试它:

结果是可行的。

作者:猿梦代码

资料来源:http://www.cnblogs.com/daimajun/

关于深入分析Java反射中的invoke()方法的文章到此为止。要了解更多相关的Java invoke()内容,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: