在代码中,当我只知道指向dao对象的豆类时,我如何在运行时获得方法(在dao对象中(参数名称?
我正在使用Java 7,弹簧4.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中,dao对象是代理对象,代理对象似乎没有参数名称信息,因此它使这个问题更加复杂且困难
您可以尝试使用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());
}
如果您使用的是Java 8,请查看以下链接以使用反射获取方法参数名称。
https://www.baeldung.com/java-parameter-reflection