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方法在接口中声明呢?