以下是我使用反射的问题示例。这是一个简单的案例,但我最终需要的是动态地动态构建方法名称......但即使是这个简单的案例我也无法开始工作!
Client1 cData = (Client1) session.get(Client1.class, 1);
int cType = cData.getClientType();
int cType2 = -1;
Method method[] = null;
Method getCTypeMethod = null;
try {
method = cData.getClass().getMethods();
for (Method m : method){
System.out.println(m.getName()); // displays getClientType
}
getCTypeMethod = cData.getClass().getMethod("getClientType", int.class);
if (getCTypeMethod != null){
cType2 = (int) getCTypeMethod.invoke(cData, int.class);
}
} catch (Exception e) {
e.printStackTrace();
}
assertEquals(cType, cType2);
该行:
getCTypeMethod = cData.getClass().getMethod("getClientType", int.class);
始终抛出异常: java.lang.NoSuchMethodException:Client1.getClientType(int)
答案 0 :(得分:3)
方法getMethod接收param类,而不是返回类型,你的getClientType
收到一个int?
如果没有,请尝试:
cData.getClass().getMethod("getClientType");