【发布时间】:2017-12-03 07:49:26
【问题描述】:
我在尝试对同一类中的方法调用 getMethod 时遇到 NoSuchMethodException,而从哈希映射中提取的字符串名称没有参数。任何建议,或仅在给定方法的字符串名称的情况下调用同一类中的方法的另一种方法? 获取方法的调用在这里:
if (testChoices.containsKey(K)) {
String method = testChoices.get(K);
System.out.println(method);
try {
java.lang.reflect.Method m = TST.getClass().getMethod(method);
m.invoke(testChoices.getClass());
} catch (NoSuchMethodException e1) {
// TODO Auto-generated catch block
System.out.println("No method found");
e1.printStackTrace();
} catch (SecurityException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
我试图调用的方法之一在这里:
private static void testgetDomainLic() throws IOException {
被调用的地图条目在这里:
testChoices.put(1, "testgetDomainLic");
【问题讨论】:
-
静态方法
testgetDomainLic()是在TST类中定义的,还是在它的超接口中定义的? -
TST 只是 testgetDomainLic() 所在类的一个实例。
-
我改成用 Class.forName 调用直接定义的类,还是找不到方法。
标签: java reflection invoke nosuchmethod