java 通过反射怎么获取方法中参数值 public Userinfo findById(String id){}例如我有上面的一个方法 我现在通过反射已经得到了参数名 也就是得到了参数类型是java.util.String 但我现在要获取到id这个值应该怎么获取 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 上面的代码是一个接口的实现类 我已经在一个类中调用了这个接口并传入了id值但我现在想做的功能是通过java反射在这个接口的实现类里做一些逻辑处理 现在我通过反射已经获取该接口实现类的方法名及方法参数类型但不知道如何获取传过来的这个id值 我要通过这个不通的id值做不同的业务处理 反射只能搞定类结构,以及操作对应的对象。至于具体调用时传递的参数,直接使用反射是搞不定的。我们一般使用AOP技术或者动态代理技术来完成楼主提出的这个需求。 具体代码参考这里http://blog.codeconch.com/archives/291 这是一个获取私有属性和方法的例子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; }} 生命周期不对,反射获取的是类的静态信息,你是要在方法被调用的时候获取这次调用的动态信息,应该用动态代理主要有cglib和proxy这两种方式 请教一个ResponseEntity 的问题 关于nio的负载均衡 以及 3个db(一个sqlserver 两个mysql分别在不同IDC)这种奇怪 不能实现翻转 围棋或五子棋的定式棋谱在库中用什么样的结构存储比较合理? 一个小问题 请教高手,谢谢!100分 请问如何用jxl读取带密码保护的excel文件呢??大家帮帮忙吧,弄了一天都没找到办法 请给我一个学Java 而不是.NET的理由!! 小问,马上结贴。 在Java程序中怎样动态的检查SQL语句是否正确? 请问Swing游戏地图怎么表示 java在windows下生成coredump文件的方法
至于具体调用时传递的参数,直接使用反射是搞不定的。
我们一般使用AOP技术或者动态代理技术来完成楼主提出的这个需求。
http://blog.codeconch.com/archives/291
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;
}}
主要有cglib和proxy这两种方式