I don't mean to sound like Grumpy Smurf but did I tell you I hate casting? Thanks to the new JDK 1.5 templating I can finally eliminate them!
Eliminate Them! (A quote from Star Trek Insurrection)
An Enterprise Java Bean Example
// Old private UserSessionHome getUserSessionHome() throws Exception { return (UserSessionHome) initialContext.lookup("ejb/UserSession"); } private AccountHome getAccountHome() throws Exception { return (AccountHome) initialContext.lookup("ejb/Account"); } // New private UserSessionHome getUserSessionHome() throws Exception { return getHome("ejb/UserSession"); } private AccountHome getAccountHome() throws Exception { return getHome("ejb/Account"); } private <T> T getHome(String jndiName) throws Exception { return (T) initialContext.lookup(jndiName); } Usage Example: UserSession userSession = getUserSessionHome().create(); userSession.createUser(userInfo);
A Spring DAO example
@SuppressWarnings("unchecked") public <T> T get(Class entityClass, Serializable id) { return (T) super.getHibernateTemplate().get(entityClass, id); }
In your DAO Implementation Class:
// OLD (with Casting) public User getUser(String username) { return (User) super.getHibernateTemplate().get(User.class, username); } // New public User getUser(String username) { return get(User.class, username); }
Hey, wouldn't it be nice if the Spring developers provide an IBatis SqlMapTemplate and HibernateTemplate specifically for JDK5 to eliminate casting. My 2 cents...