当类名和方法名存储在两个不同的字符串中时,如何调用类的方法(在java中)

时间:2013-04-29 17:14:19

标签: java class jsp

嗯,不确定这个问题听起来有点奇怪,但让我试着澄清一下:

我有一个JSP页面。在这个JSP页面上,我正在调用我的项目中的一个包中定义的java类。该类连接数据库并访问一个具有字段的表 - functionname,function class。现在我能够在JSP中检索两个字符串,比如说 -

String funName = "ComFunctions";
String className = "funLog");

现在,我想使用这个类名来调用这个函数,例如类似于 - className.funName

在Java中有可能吗?实际上,这些函数和类名将在for循环中检索,因此我不能使用真实的类名直接调用,但必须使用字符串。

请建议是否存在方法或问题,或者问题是否仍然不清楚。

到目前为止我尝试了以下方法,但没有运气 -

Class c = Class.forName(className);
Object o = c.newInstance();
Method m = c.getMethod(funName, String.class); // Not sure what is supposed to be second parameter here i.e. after funName

错误 - 上面的代码给出了“No class found error”。我确保课程在课程下面。即使添加包名称,即packge.classname也没有帮助,它会为包名称显示“找不到符号”。

请指点什么?

我尝试调用的示例类 -

package mypackage;

public class ComFunctions extends WDriverInitialize{

    public static void main(String[] args){


    }



    public static void funLog(String username){


        System.out.println(userName);


    }



}

2 个答案:

答案 0 :(得分:1)

您需要确保编译的类位于webapp的类路径(即WEB-INF / classes)中并使用FQN(即添加包名称)。您还可以创建类的JAR文件,并将其添加到WEB-INF / lib文件夹中。

此外,getMethod中的额外参数是获取具有匹配参数的方法(例如,在您的示例中,采用String的方法

答案 1 :(得分:1)

你错过了一个难题,那就是方法论证。没有它,你无法确定funName指的是什么方法,以及传递给它的参数。

当然,这个类需要在类路径中。