代码之家  ›  专栏  ›  技术社区  ›  deen

从递归方法调用另一个类的方法:Java

  •  -1
  • deen  · 技术社区  · 7 年前

    我有两个班,A班和B班-

    A类:-此类具有getData方法,用于从DB获取数据。

    class A {
        public synchronized getData() {
           // get some data from database, in finally block close connection
        }
    }
    

    类B:-它有递归方法m(),在这个方法中,我调用了类A的getData()。

    class B {
       m() {
          //some condition to terminate the recursion
          A a = new A();
          a.getData();
          m();
       }
    }
    

    我收到的错误:-

    Java语言lang.NullPointerException:null 在com。麦克亨格。v2.c3p0。实施。新建代理连接。getAutoCommit(NewProxyConnection.java:1226)~[c3p0-0.9.5.1.jar:0.9.5.1]

    对于getData()方法的第一次调用,我可以从DB中获取数据,但在第二次递归之后,我将连接设置为关闭。任何帮助都将不胜感激。

    更新:

    我有一个DB Util方法,它在每次调用getData()方法时打开连接。如果我在没有递归方法的情况下调用它(很多次),效果很好,但如果我使用递归,我会出错。递归方法有什么特殊情况需要处理吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   cse    7 年前

    该错误指定 连接已关闭 . 另外,在你的评论中 // get some data from database, in finally block close connection ,您提到在使用后已关闭连接,但您没有提到如果您在中打开连接 getData() 方法。

    我建议如下:

  • 检查您是否正在打开中的连接 getData() 方法如果没有,那么 任何一个 仅在此方法中打开连接(从其他方法中删除打开连接的代码) 在此方法中使用后不要关闭连接,而是根据需要使用其他方法关闭连接。
  • 检查连接资源是否可重用。