NoSuchMethodException方法存在时抛出

我试图创建一个方法,它接受两个字符串参数并调用对象的方法调用。 这两个参数将提供className和methodName。 理想情况下,我想使用反射来查找调用该方法的对象和方法。 这是我管理的自动化套件。

public void executeMethod(String className, String methodName){
   Class object = className.getClass(); 
   Method objMethod = object.getMethod(methodName); 
   objMethod.invoke(pageObject);  
}

当我运行它时,我收到一个错误NoSuchMethodException:java.lang.String.isPageDisplayed()。

我相信我的问题存在于找到对象或与对象有关的东西。

如果我执行上面的同样的方法,如下所示,它的工作原理:

public void executeMethod(String className, String methodName){ 
    Method objMethod = knownObject.class.getMethod(methodName);
    m1.invoke(pageObject);
}

任何人都可以帮我弄清楚我做错了吗? 在这种情况下,我试图调用的方法是public static void方法。


由于classNameString类型,因此className.getClass()仅返回一个Class<String> ,该Class<String>显然没有该方法作为成员。 相反,你应该使用Class.forName(className)

public void executeMethod(String className, String methodName){
   Class<?> clazz = Class.forName(className); 
   Method objMethod = clazz.getMethod(methodName); 
   objMethod.invoke(pageObject);  
}

String类名应该是Object类。 否则,它假定该方法在String的实例内。


假设你有要调用方法的对象,然后将它传递给方法而不是类名。 此外,你应该使用getDeclaredMethod ,而不是getMethod

public void executeMethod(Object object, String methodName) {
    Class clazz = object.getClass(); 
    Method method = clazz.getDeclaredMethod(methodName); 
    method.invoke(object);  
}
链接地址: http://www.djcxy.com/p/76511.html

上一篇: NoSuchMethodException Thrown when method exists

下一篇: Passing parameters dynamically into Method.Invoke