我翻译一些代码,从C#与Java封闭,但我得到了一个错误,代码是这样的:Java和关闭
public ArrayList<String> getData(){
String pSentence = "SELECT * FROM EMPLOYEES";
ArrayList<String> pList = null;
_con.queryFB(pSentence, (PreparedStatement ps, ResultSet rs) -> {
pList = new ArrayList<>();
try {
rs = ps.executeQuery();
while (rs.next()) {
pList.add(rs.getString(1) + " : " + rs.getString(2) + " : " + rs.getString(3));
}
}
catch (Exception ex) {
}
});
return pList;
}
这仅仅是一个封闭执行查询,关闭只是让确保与数据库的连接始终是关闭的,但是我得到的错误是,“pList”方法变量必须是最后才能用在闭包中的,这是我没有用C#处理的问题,好吧,得到一个新的错误,最终var pList无法修改,所以,我所做的就是将pList移出该方法,并将其置于一个私有变量中,如下所示:
private ArrayList<String> pList = null;
public ArrayList<String> getData(){
String pSentence = "SELECT * FROM EMPLOYEES";
_con.queryFB(pSentence, (PreparedStatement ps, ResultSet rs) -> {
pList = new ArrayList<>();
try {
rs = ps.executeQuery();
while (rs.next()) {
pList.add(rs.getString(1) + " : " + rs.getString(2) + " : " + rs.getString(3));
}
}
catch (Exception ex) {
}
});
return pList;
}
然后它工作,但是,我想知道是否会有内存泄漏或知道是否有更好的方法来做到这一点,谢谢。
你说得对,我把方法内部的声明和初始化,但在关闭之外,它工作,谢谢。 – user2070369