是一个使用stuts,hibernate的BS结构的列子com.audit.dao.DAOFactorypackage com.audit.dao;import com.audit.dao.imp.*;public abstract class DAOFactory {

private static Object initLock = new Object(); private static String className = "com.audit.dao.imp.HibernateDAOFactory"; private static DAOFactory factory = null; public static DAOFactory getInstance() {
if (factory == null) {
synchronized (initLock) {
if (factory == null) {
// Note, the software license expressely forbids
// tampering with this check.
// LicenseManager.validateLicense("Jive Forums Basic",
// "2.0"); String classNameProp = DAOConfig
.getProperty("DAOFactory.className");
if (classNameProp != null) {
className = classNameProp;
}
try {
// Load the class and create an instance.
Class c = Class.forName(className);
factory = (DAOFactory) c.newInstance();
} catch (Exception e) {
System.err.println("Failed to load DAOFactory class "
+ className
+ ". Audit cannot function normally.");
System.out.print(e);
e.printStackTrace();
return null;
}
}
}
}
return factory;
} public abstract UserInfoDAO  createUserInfoDAO();
public abstract RoleDAO  createRoleDAO();
public abstract ProvinceDAO  createProvinceDAO();
public abstract CorpDAO  createCorpDAO();
}com.audit.dao.imp.HibernateDAOFactorypackage com.audit.dao.imp;import com.audit.dao.UserInfoDAO;
import com.audit.dao.RoleDAO;
import com.audit.dao.ProvinceDAO;
import com.audit.dao.CorpDAO;public class HibernateDAOFactory extends DAOFactory { public UserInfoDAO createUserInfoDAO() {
// TODO Auto-generated method stub
return new UserInfoDAOImp();
} public RoleDAO createRoleDAO() {
// TODO Auto-generated method stub
return new RoleDAOImp();
} public ProvinceDAO createProvinceDAO() {
// TODO Auto-generated method stub
return new ProvinceDAOImp();
} public CorpDAO createCorpDAO() {
// TODO Auto-generated method stub
return new CorpDAOImp();
}
}com.audit.dao.imp.DAOFactorypackage com.audit.dao.imp;import com.audit.dao.UserInfoDAO;
import com.audit.dao.RoleDAO;
import com.audit.dao.ProvinceDAO;
import com.audit.dao.CorpDAO;
public class DAOFactory {

}
调用到com.audit.dao.DAOFactory的factory = (DAOFactory) c.newInstance();的时候会发生类型转换错误:java.lang.ClassCastException: com.audit.dao.imp.HibernateDAOFactoryjava.lang.ClassCastException: com.audit.dao.imp.HibernateDAOFactory因为初学,我也不太理解为什么例子中有2个DAOFactory,请高手赐教