public Userinfo findById(String id){
}例如我有上面的一个方法 我现在通过反射已经得到了参数名 也就是得到了参数类型是java.util.String 但我现在要获取到id这个值应该怎么获取

解决方案 »

  1.   

    上面的代码是一个接口的实现类 我已经在一个类中调用了这个接口并传入了id值但我现在想做的功能是通过java反射在这个接口的实现类里做一些逻辑处理 现在我通过反射已经获取该接口实现类的方法名及方法参数类型但不知道如何获取传过来的这个id值 我要通过这个不通的id值做不同的业务处理
      

  2.   

    反射只能搞定类结构,以及操作对应的对象。
    至于具体调用时传递的参数,直接使用反射是搞不定的。
    我们一般使用AOP技术或者动态代理技术来完成楼主提出的这个需求。
      

  3.   

    具体代码参考这里
    http://blog.codeconch.com/archives/291
      

  4.   

    这是一个获取私有属性和方法的例子
    package seven_java;import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;public class Student {
    private String name;
    private int number;
    public int a;
    public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
    // TODO Auto-generated method stub
    Class c=Class.forName("seven_java.Student");
    Field field_name=c.getDeclaredField("name");
    Field field_number=c.getDeclaredField("number");
    Method method_getName=c.getMethod("getName");
    Method method_getNumber=c.getMethod("getNumber");
    Student student=(Student)c.newInstance();
    field_name.set(student, "zhangsan");
    field_number.set(student, 12345);
    System.out.println(method_getName.invoke(student));
    System.out.println(method_getNumber.invoke(student));
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public int getNumber() {
    return number;
    }
    public void setNumber(int number) {
    this.number = number;
    }}
      

  5.   

    生命周期不对,反射获取的是类的静态信息,你是要在方法被调用的时候获取这次调用的动态信息,应该用动态代理
    主要有cglib和proxy这两种方式