为了账号安全,请及时绑定邮箱和手机立即绑定

如何在方法内部获取当前方法的参数列表的类类型

如何在方法内部获取当前方法的参数列表的类类型

慕工程0101907 2019-01-16 00:04:03
如何在方法内部获取当前方法的参数列表的类类型在方法内部实现与method.getParameterTypes();相同的效果;
查看完整描述

3 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

提个思路:

final String methodName = new Exception().getStackTrace()[0].getMethodName();

然后反射拿到这个方法对应的 Method 实例。

查看完整回答
反对 回复 2019-03-01
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

public class Common{
    // 获取某方法的参数类型数组
    public Class[] getParameterTypes(){
        return this.getParameterTypes(1);
    }
    public Class[] getParameterTypes(int i){
        StackTraceElement stackTraceElement = new Throwable().getStackTrace()[i];
        try {
            Method[] ms = Class.forName(stackTraceElement.getClassName()).getMethods();
            for (Method m : ms) {
                if (m.getName().equals(stackTraceElement.getMethodName())) {
                    return m.getParameterTypes();
                }
            }
        }catch (ClassNotFoundException ex){}
        return new Class[0];
    }
}

有问题或有更简便的方法请指出,谢谢;

查看完整回答
反对 回复 2019-03-01
?
森栏

TA贡献1810条经验 获得超5个赞

楼上的解决方案有个小问题,若方法是重载方法,那么根据堆栈轨迹中取到的MethodName去匹配Method就会有BUG。具体解决思路暂无...

查看完整回答
反对 回复 2019-03-01
  • 3 回答
  • 0 关注
  • 624 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号