java反射调用某个类的方法(带参或不带参)

本文介绍如何使用Java反射API动态调用类的方法,包括带参数和不带参数的方法。通过`Class`和`Method`类的API,可以获取并执行类的指定方法。文中提供了一个示例代码,展示了如何根据字符串动态调用类的方法,适用于需要灵活调用不同方法的场景。需要注意,反射操作虽然灵活,但效率较低,应谨慎使用。
摘要由CSDN通过智能技术生成



Class类:

public getDeclaredMethod( name,                                  <?>... parameterTypes)                           throws ,                                  

返回一个 Method对象,该对象反映此 Class对象所表示的类或接口的指定已声明方法。name参数是一个 String,它指定所需方法的简称,parameterTypes参数是 Class对象的一个数组,它按声明顺序标识该方法的形参类型。如果在某个类中声明了带有相同参数类型的多个方法,并且其中有一个方法的返回类型比其他方法的返回类型都特殊,则返回该方法;否则将从中任选一个方法。如果名称是 "<init>” 或 “<clinit>",则引发一个 NoSuchMethodException。 

参数:

name- 方法名 

parameterTypes- 参数数组 

返回:

该类与指定名和参数相匹配的方法的 Method对象 

抛出:

- 如果找不到匹配的方法。 

- 如果 name为 null

- 如果存在安全管理器 s,并满足下列任一条件: 

·        调用 拒绝访问已声明方法 

·        调用者的类加载器不同于也不是当前类的类加载器的一个祖先,并且对 的调用拒绝访问该类的包 

从以下版本开始:

JDK1.1 

 

 

Method类:

 

public invoke( obj,... args)throws , ,                       

对带有指定参数的指定对象调用由此 Method对象表示的底层方法。个别参数被自动解包,以便与基本形参相匹配,基本参数和引用参数都随需服从方法调用转换。 

如果底层方法是静态的,那么可以忽略指定的 obj参数。该参数可以为 null。 

如果底层方法所需的形参数为 0,则所提供的 args数组长度可以为 0 或 null。 

如果底层方法是实例方法,则使用动态方法查找来调用它,这一点记录在 Java Language Specification, Second Edition 的第 15.12.4.4 节中;在发生基于目标对象的运行时类型的重写时更应该这样做。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值