RSS Feed for This PostCurrent Article

Java: Favor Generic Methods If Possible

Instead of this,

   1: /**
   2:    * General select statement which allows you to pass in
   3:    * arbitrary parameter object
   4:    *
   5:    * @param obj      Parameter object
   6:    * @param sqlQuery SQL statement
   7:    * @return The desired return type
   8:    * @throws DaoException Database exception
   9:    */
  10:   protected Object select(Object obj, String sqlQuery) throws DaoException {
  11:       try {
  12:           Object result = sqlMapClient.queryForObject(sqlQuery, obj);
  13:           return result;
  14:       } catch (SQLException e) {
  15:           throw new DaoException("Error running SQL statement: " + sqlQuery +
  16:                   ". Error message is " + e.getMessage(), e);
  17:       } catch (SqlMapException sqlMapEx) {
  18:           throw new DaoException("Error running SQL statement: " + sqlQuery +
  19:                   ". Error message is " + sqlMapEx.getMessage(), sqlMapEx);
  20:       }
  21:   }

You should try to use generic method starting JDK 5.

   1: /**
   2:     * General select statement which allows you to pass in
   3:     * arbitrary parameter object
   4:     *
   5:     * @param obj      Parameter object
   6:     * @param sqlQuery SQL statement
   7:     * @return The desired return type
   8:     * @throws DaoException Database exception
   9:     */
  10:    protected <E, F> F select(E obj, String sqlQuery) throws DaoException {
  11:        try {
  12:            Object result = sqlMapClient.queryForObject(sqlQuery, obj);
  13:            return (F) result;
  14:        } catch (SQLException e) {
  15:            throw new DaoException("Error running SQL statement: " + sqlQuery +
  16:                    ". Error message is " + e.getMessage(), e);
  17:        } catch (SqlMapException sqlMapEx) {
  18:            throw new DaoException("Error running SQL statement: " + sqlQuery +
  19:                    ". Error message is " + sqlMapEx.getMessage(), sqlMapEx);
  20:        }
  21:    }


Trackback URL


RSS Feed for This PostPost a Comment

CAPTCHA Image
Refresh Image
*