从递归方法调用另一个 class 的方法:Java
Calling Method of another class from Recursion Method: Java
我有两个 class 作为 A 和 B-
Class A:- 这个 class 有 getData 方法,用于从数据库中获取数据。
class A {
public synchronized getData() {
// get some data from database, in finally block close connection
}
}
Class B:- 有递归方法 m(),在这个方法中我调用 class A.
的 getData()
class B {
m() {
//some condition to terminate the recursion
A a = new A();
a.getData();
m();
}
}
错误我得到:-
java.lang.NullPointerException: null
at com.mchange.v2.c3p0.impl.NewProxyConnection.getAutoCommit(NewProxyConnection.java:1226) ~[c3p0-0.9.5.1.jar:0.9.5.1]
对于 getData() 方法的第一次调用,我能够从数据库中获取数据,但是在第二次递归之后,我将连接关闭。任何帮助将不胜感激。
更新:
我有 DB Util 方法,它在每次调用 getData() 方法时打开连接。如果我在没有递归方法的情况下调用它(多次),它工作正常,但如果我使用递归,我就会出错。对于递归方法,我必须处理任何特殊情况吗?
错误指定连接已关闭。另外,在您的评论 // get some data from database, in finally block close connection
中,您提到您在使用后关闭了连接,但是,您没有提到您是否在 getData()
方法中打开连接。
我建议如下:
检查您是否在 getData()
方法中打开连接。如果不是,那么或者只在这个方法中打开连接(从其他方法中删除打开连接的代码)或者不要关闭连接在此方法中使用后,根据需要使用不同的方法关闭连接。
检查连接资源是否可重用。
我有两个 class 作为 A 和 B-
Class A:- 这个 class 有 getData 方法,用于从数据库中获取数据。
class A {
public synchronized getData() {
// get some data from database, in finally block close connection
}
}
Class B:- 有递归方法 m(),在这个方法中我调用 class A.
的 getData()class B {
m() {
//some condition to terminate the recursion
A a = new A();
a.getData();
m();
}
}
错误我得到:-
java.lang.NullPointerException: null at com.mchange.v2.c3p0.impl.NewProxyConnection.getAutoCommit(NewProxyConnection.java:1226) ~[c3p0-0.9.5.1.jar:0.9.5.1]
对于 getData() 方法的第一次调用,我能够从数据库中获取数据,但是在第二次递归之后,我将连接关闭。任何帮助将不胜感激。
更新:
我有 DB Util 方法,它在每次调用 getData() 方法时打开连接。如果我在没有递归方法的情况下调用它(多次),它工作正常,但如果我使用递归,我就会出错。对于递归方法,我必须处理任何特殊情况吗?
错误指定连接已关闭。另外,在您的评论 // get some data from database, in finally block close connection
中,您提到您在使用后关闭了连接,但是,您没有提到您是否在 getData()
方法中打开连接。
我建议如下:
getData()
方法中打开连接。如果不是,那么或者只在这个方法中打开连接(从其他方法中删除打开连接的代码)或者不要关闭连接在此方法中使用后,根据需要使用不同的方法关闭连接。