【发布时间】:2017-10-23 16:35:05
【问题描述】:
我正在使用 Jdbctemplate 并尝试在 mapRow 方法中设置一个布尔值。但它不允许,它说
Cannot refer to a non-final variable isEveryTransactionNotClosed inside an inner class defined in a different method
这是我的代码
public boolean isEveryTransactionNotClosed (String txIds) throws QiibException {
String sql = "<Query> ";
logger.info("isEveryTransactionNotClosed SQL :"+sql);
boolean isEveryTransactionNotClosed = true;
try {
isEveryDealNotClosed = getJdbcTemplate().queryForObject(sql, new Object[] {dealIds},
new RowMapper<Boolean>() {
public Boolean mapRow(ResultSet rs, int rowNum) throws SQLException {
if (!rs.next()) {
isEveryTransactionNotClosed = false; -->
}
}
});
} catch(EmptyResultDataAccessException e) {
logger.error("Empty result data - isEveryTransactionNotClosed ");
}
return isEveryTransactionNotClosed ;
}
如何在类中使用 isEveryTransactionNotClosed?
【问题讨论】:
-
通过调用它?你能展示一下你现在是如何称呼它的吗?不要给变量取与方法相同的名称。将您的变量声明为 final 并重试
-
@Stultuske,我将该方法称为 boolean result = isEveryTransactionNotClosed (String dealIds);
-
您的代码存在一些问题。检查我刚刚发布的答案,然后重试。
-
如果局部变量不是最终的(或者因为 java 8 有效地最终),您不能将局部变量访问到内部类中
标签: java