java - 绕过 Java 闭包最终限制的模式

标签 java coding-style closures

我正在尝试编写一段非常简单的代码,但无法找到一个优雅的解决方案:

int count = 0;
jdbcTemplate.query(readQuery, new RowCallbackHandler() {
         @Override
         public void processRow(ResultSet rs) throws SQLException {
            realProcessRow(rs);
            count++;
         }
      });

这显然无法编译。我知道的两个解决方案都很糟糕: 我不想将 count 设为类字段,因为它实际上是一个局部变量,我只需要用于日志记录目的。 我不想将 count 设为数组,因为它很丑陋。

这太愚蠢了,一定有一个合理的方法吗?

最佳答案

第三种可能性是使用final-mutable-int-object,例如:

final AtomicInteger count = new AtomicInteger(0);
....
count.incrementAndGet();

Apache Commons 也有一个 MutableInteger 我相信,但我没有使用过它。

关于java - 绕过 Java 闭包最终限制的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10937956/

相关文章:

c++ - C++11 中的 Lambda 函数变量

javascript - for循环中的闭包

Java 8流findFirst抛出NPE,无法从流中过滤掉非空对象

Java TreeMap 迭代器对于 String 键无法正常工作

java - install4j - 更新文件放置在我的本地目录中

java - 使用 SocketIO 的 Docker 容器之间无法建立连接

java - 内部类默认为 "sensible"接口(interface)?

c++ - 参数的最佳实践?

c# - 无故使用 'var' 关键字是否有害?

python 闭包 + oop