有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java:方法。调用(this,args)NullPointerException

我发布了这个this问题,基本上相当于试图将字符串映射到Java中的函数。我试图通过创建一个HashMap <String, Method>来解决这个问题,但每次我都试图运行这个方法。调用(这里是args),其中args是与方法的参数相对应的对象数组,我得到一个NullPointerException。我在我的HashMap中声明方法如下:mypackage.MyClass.class.getMethod ("methodName", args),其中argsClass对象的数组,对应于methodName的参数。我已经为此工作了几个小时,我开始感到非常沮丧。如果有人有任何建议,我将不胜感激

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)

共 (1) 个答案

  1. # 1 楼答案

    如果thisResult为null,则此行只能生成NPE,这反过来意味着thisKey在myTests中未初始化。用“aKey”代替这个键,它应该可以工作