在代码中,当我只知道指向dao对象的beanId时,如何在运行时获取方法(在dao对象中)参数名称?
我使用的是Java7,Spring4.1.6.RELEASE,Mybatis 3.2.8。我完全一无所知
String daoBeanId = "IUserDao";
String methodName = "insertUser";
ApplicationContext applicationContext = SpringContextUtil.getApplicationContext();
Object daoInstance = applicationContext.getBean(daoBeanId);
Class daoClass = daoInstance.getClass();
Method method = ReflectUtil.getMethod(daoClass,methodName);
//some code to get this method's parameter names
这不同于“我能用Java反射获取方法参数名吗?”,因为在mybatis中,道对象是代理对象,代理对象似乎没有参数名信息,这就使得这个问题变得更加复杂和困难
发布于 2019-05-27 17:13:01
您可以在Java 8中尝试执行此操作
Parameter[] parameters = method.getParameters();
for (Parameter parameter : parameters) {
System.out.println(parameter.getName());
}
这适用于较早的Java版本
for (int i = 0; i < method.getArgumentTypes().length; i++) {
LocalVariable variable =
method.getLocalVariableTable().getLocalVariable(i);
System.out.println(variable.getName());
}
发布于 2019-05-27 16:30:11
如果您使用的是Java 8,请查看下面的链接,以使用反射获取方法参数名称。
https://stackoverflow.com/questions/56321907
复制相似问题