利用反射获取一个类中的所有方法和该方法的参数

因为平时用反射很少,之前一次面试被问到反射这块的一个问题,很简单,当时给了个不是很确切的答案,回家之后也忘了去找出这个问题的答案,今天手头上的工作比较闲,就把之前的那个问题给解决下。
被问到的是,我只知道一个类和他其中的一个方法,不知道方法的参数情况,我怎么定位到这个方法?这个问题我想到的就是反射获取这个类的所有方法,然后去找它的参数(当时不确定有方法能获取参数类型),在反过来调用这个方法。然后被问到如何获取参数类型和个数,这个我就没有回答上来。后来才知道是有方法能够获取的,所以今天我就把我写的一个测试的代码贴下面,代码很简单所以注释就不多,应该都能看懂,不懂得查查API或者百度一下,我还是比较建议大家查API的。


package test002;

import java.lang.reflect.Method;

public class Test1 {

	public static void main(String[] args) {
		try {
			Class<?> clazz = Class.forName("test002.test01");
			//获取本类的所有方法,存放入数组
			Method[] methods = clazz.getDeclaredMethods();
			for (Method method : methods) {
				System.out.println("方法名:"+method.getName());
				//获取本方法所有参数类型,存入数组
				Class<?>[] getTypeParameters = method.getParameterTypes();
				if(getTypeParameters.length==0){
					System.out.println("此方法无参数");
				}
				for (Class<?> class1 : getTypeParameters) {
					String parameterName = class1.getName();
					System.out.println("参数类型:"+parameterName);
				}
				System.out.println("****************************");
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
}

class test01 {
	public test01(){
		System.out.println("我是tset01");
	}
	public void t1(){}
	public void t2(String sss){}
	public void t3(Integer integer,Boolean boo,test02 t){}
}
class test02{}

因为是随手写的,为的是以后方便查看,所以也就没有做过多的格式调整。

结果如下:


这个可以找到所有的方法和这个方法所有的参数类型,这样的话想要定位到其中某一个方法,只需要做一个判断过滤一下就能够获取所需要的方法的参数类型及个数,就可以调用这个方法了。这只是个简单的方法使用,以后有机会再多写点反射的,在平时的使用中作用还是蛮大的。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wal1314520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值