Есть ли способ получить доступ к переменным с областью вызова из анонимного внутреннего класса в 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
был окончательным, если он есть - он не компилируется, потому что я пытаюсь изменить окончательный var. Я связан с JDK5. Кроме того, что вообще можно удалить doWork()
, есть ли способ установить значение результата из doWork()
?