@Override public void execute(final String sql) throws DataAccessException { if (logger.isDebugEnabled()) { logger.debug("Executing SQL statement [" + sql + "]"); } class ExecuteStatementCallback implements StatementCallback<Object>, SqlProvider { @Override public Object doInStatement(Statement stmt) throws SQLException { stmt.execute(sql); return null; } @Override public String getSql() { return sql; } } execute(new ExecuteStatementCallback()); }以上這段代碼來自JdbcTemplate的代碼,請問為什么要在execute方法內(nèi)定義類ExecuteStatementCallback呢?這樣做有什么好處?
3 回答

胡子哥哥
TA貢獻1825條經(jīng)驗 獲得超6個贊
這樣做只是一種良好的封裝吧. 首先 ExecuteStatementCallback 主要作為一個回調(diào), 它本身的代碼量比較小, 如果作為單獨的一個類的話, 對工程管理來說也不太合適; 第二, 因為這樣的回調(diào)類和業(yè)務(wù)代碼的關(guān)聯(lián)很大, 并且通常是只在一個地方使用, 因此可以在方法中定義這樣的類, 進而可以實現(xiàn)良好的封裝.
一般這樣的情況下, 就如上面朋友所說的, 使用匿名的內(nèi)部類比較好, 這樣代碼會更加簡潔一些.
添加回答
舉報
0/150
提交
取消