我发布了这个this问题,这基本上等于尝试将Strings映射到Java中的函数。我试图通过创建一个HashMap <String, Method>
来解决它,但是每次我尝试运行Method.invoke(this,args),其中args是对应于Method参数的对象数组时,我得到一个NullPointerException
。我在我的HashMap
中声明方法如下:mypackage.MyClass.class.getMethod ("methodName", args)
,其中args
是对应于参数methodName
的Class
对象的数组。我一直在为此工作了几个小时,我开始非常沮丧。如果有人有任何建议,我会非常感激!Java:Method.invoke(this,args)NullPointerException
HashMap <String, Method> myMethods = new HashMap <String, Method>();
Class [] args = {param1.class, param2.class, param3.class};
myMethods.put ("aKey", mypackage.MyClass.class.getMethod ("aMethod", args));
Method thisTest = myTests.get (thisKey);
Object [] args1 = {param1, param2, param3};
String thisResult = (String) thisTest.invoke (this, args1); // NPE occurs in this line
Aug 14, 2012 10:37:36 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at mypackage.MyClass.myMethod (MyClass.java:61)
at org.apache.jsp.myMethod_jsp._jspService(getZabbix_jsp.java:70)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
请给我们看一些代码和堆栈跟踪。真的很难说出发生了什么事。 – 2012-08-14 21:15:00
谢谢你的帮助,每个人......很明显,我在StackOverflow格式化方面遇到了一些麻烦。 – 2012-08-14 21:25:36
是invoke()中的“this”调用正确类型的对象吗?在你的情况下,它必须是一个MyClass对象 – jrochette 2012-08-14 21:33:05