日期:2014-05-20  浏览次数:20832 次

java的一段程序,不知道是什么方法,谁跟我解释一下,谢谢了!!
public interface IUserDao {
public User findByEmpCodeAndPassword(User user) throws Exception;
}


public class UserDaoImpl  implements IUserDao {
public User findByEmpCodeAndPassword(User user) throws Exception {
List<User> list = (List<User>) getHibernateTemplate().findByExample(
user);
return list.size() > 0 ? list.get(0) : null;
}
       public void save(T object) {
getHibernateTemplate().save(object);
}
}

public class UserService  {
        private IUserDao userDao;
        public ServiceReturns<User> save(User user) throws Exception {
        
              ((UserDaoImpl) userDao).saveOrUpdate(user);

}

}

在上面的程序中,((UserDaoImpl) userDao).save(user);这句话为什么可以这样写,是强制转换还是父类引用指向子类对象呢???userDao里面没有save方法,而UserDaoImpl里面有,这种写法叫什么??




------最佳解决方案--------------------
强制向下转换。这么转必需有继承关系才行。一看就是框架代码。太恶心了。。。
------其他解决方案--------------------
为什么不把save方法在接口中声明呢?