在Java中,有没有办法从匿名内部类中访问调用者作用域的变量?
以下是示例代码,以了解我需要什么:
public Long getNumber(final String type, final String refNumber, final Long year) throws ServiceException {
Long result = null;
try {
Session session = PersistenceHelper.getSession();
session.doWork(new Work() {
public void execute(Connection conn) throws SQLException {
CallableStatement st = conn.prepareCall("{ CALL PACKAGE.procedure(?, ?, ?, ?) }");
st.setString(1, type);
st.setString(2, refNumber);
st.setLong(3, year);
st.registerOutParameter(4, OracleTypes.NUMBER);
st.execute();
result = st.getLong(4) ;
}
});
} catch (Exception e) {
log.error(e);
}
return result;
}
这段代码位于DAO服务类中。显然它无法编译,因为它要求result
是final的,如果是这样的话--它不会编译,因为我试图修改一个final变量。我必须使用JDK5。除了完全放弃doWork()
之外,有没有一种方法可以在doWork()
内设置结果值?
public static final AtomicLong RESULT = new AtomicLong(0); RESULT.set(st.getLong(4););
(注意:代码需要手动翻译,不要使用机器翻译) - M Faisal Hameed