java - 如何使用反射获取方法的参数

标签 java reflection

我被这个问题困扰了。我对反射(reflection)还很陌生。

我有一个方法,说:

void foo(String s, int i){...}

假设有人使用 foo("hey", 5); 的输入调用此方法;

如何使用反射获取值“hey”和 5?当我尝试这样做时,我只是得到一大堆 String 和 Integer 对象变量。

最佳答案

听起来你在谈论AOP(面向方面​​的编程) - 而不是反射。方法拦截器可以让您在运行时访问调用(包括访问参数)。访问参数的方式取决于 API。

public class MyMethodInterceptor implements MethodInterceptor {

    public Object invoke(MethodInvocation invocation) throws Throwable {
        System.out.println("Before: invocation=[" + invocation + "]");

        // use MethodInvocation.getArguments() to access the runtime parameters
        System.out.println(Arrays.toString(methodInvocation.getArguments()));

        Object rval = invocation.proceed();
        System.out.println("Invocation returned");
        return rval;
    }
}

注意:AOP 是一项先进技术,您需要做一些功课才能有效地使用它。请参阅http://static.springsource.org/spring/docs/2.0.2/reference/aop-api.html有关上面给出的示例的详细信息。

关于java - 如何使用反射获取方法的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5984296/

相关文章:

java - 从 JavaScript 检索数据的简单方法

java - 使用反射时如何检查字段是否有注释

c# - 如何将带有某些绑定(bind)参数的任意函数传递给另一个函数?

java - 通过 CGLIB 代理时方法注释为 null

c# - 如何在强类型接口(interface)上引用方法名称

java - 如何使用 NetBeans IDE 控制 Java/Swing GUI 组件对齐?

java - Spring 数据 REST MongoDB : Retrieve objects of DBRef instead of href

java - intellij idea 中 Spring BEAN xml 编辑器的 GUI

java - 查找错误并进行比较

c# - 自定义属性类是否继承 "Inherited"AttributeUsage 标志?