用户名:web_show
临坚河围没衡invoke(调用)就是调用Method类代表的方法。可以实现动态调用,例如可以动态的传人参数,可以把方法参数化。
可以把方法参数化invoke(class,method),比如Test类里有一系列名字相似的方法setValue1、setValue2等等,可以把方来自法名存进数组v[],然后循环里invoke(test,v[i]),就顺序调用了全部setValue。
此外,invoke()对带有指定参数的指定对象调用,个别参数被自动解包,与基本形参相匹配,基本参数和引用免响求大达参数都随需服从方法调用转换。如下
publicObjectinvoke(Objectobj,Objectargs)
throwsIllegalAccessException,
Illegal问答ArgumentException,
InvocationTargetException
如果底层方法是静态的,那么可以忽略指定的obj参数。该参数可以为**ll。
如果底层方法所需的形参数践关学势为0,则所提供的args数组长度可以为0或**构失势风款州袁ll。
如果底层方法是实例方法,则使用动态方法查找来调用它,这一洋饭块点记录在J**aLanguageSpecification,SecondEdition的第15.12.4.4节中;在发生基于目标对象的运行时类型的重写时更应该这样做。
如果底层方法是静态的,并且尚未初始化声明此方法的类,则会将其初始现停情剂当航化。
如果方法正常完成,则将该方法返回的值返回给调用栈如果该它加历哥风欢值为基本类型,则首先适当地将其包装在对象中。但是,如果该值的类型为一组基本类型,则数组元素不被包装在对象中;换句话说,将返回基本类型的数组。如果底层方法返回类型为void,则该调用返回**ll。
非聚致建兰音增留此都扩展**:语言特点
1.简单性
J**a看起来设计得解例它厂很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些克特征是一般程序员很少使用的。例如,Ja收亲胞个信利延满矿va不支持goto语句,代之以提供bre**和conti**e语句以及异常处理。
2.分布性
端占散欢训稳强回落J**a设计成支持在网络上应用,它是分布式语言。J**a既支持各种层次的网络连接,又以Socket类支持可靠的流(stream)网络连距随前院子接,所以用户可以**生分布式的客户机和服务器。
网络变成软件应用的分布数不套状施见营甲鱼认台运载工具。J**a程序只要编写一次,就可到处运行。
3.编译和解释性
J**a编译程序生成字节码(byte-code),而不是通常的机器码。J**a字节码提供对体系结构中性的目标文件格式,代码设计成可差简温度那衣短有效地传送程序到多个平台。J**a程序可以在任何实现了J**a解释程序和运行系统(r迅龙善督达技un-timesystem)的系统上运行。
参考**来源:oracle官网——C困宁易定族lassMethod(invoke()见底部)