java闭包和闭包运算_Java和闭包

我正在从C#到Java的闭包翻译一些代码,但我得到一个错误,代码是这样的:

public ArrayList getData(){

String pSentence = "SELECT * FROM EMPLOYEES";

ArrayList 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#,好吧,我做了最后,我得到一个新的错误,最终变种pList不能被修改,所以,我做的是将pList移出该方法,并将其放入一个私有变量,如下所示:

private ArrayList pList = null;

public ArrayList 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;

}然后它工作,但是,我想知道是否会有内存泄漏或知道是否有更好的方法来做到这一点,谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值