相关疑难解决方法(0)

从匿名内部类设置外部变量

有没有办法从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;
}
Run Code Online (Sandbox Code Playgroud)

代码位于DAO服务类中.显然它不会编译,因为它要求result是final,如果是 - 它不会编译,因为我尝试修改最终的var.我被JDK5绑定了.除了doWork()完全放弃之外,有没有办法从内部设置结果值doWork()

java anonymous-class

52
推荐指数
5
解决办法
4万
查看次数

标签 统计

anonymous-class ×1

java ×1