public interface IDataAccessObjectable
{}public interface IUserInfoDAO extends IDataAccessObjectable
{
   //包含一些操作UserInfo表的操作。
}public class UserInfoDAO implements IUserInfoDAO
{
  //具体实现IUserInfoDAO这个接口
}
//一个创建DAO的的工厂
/**
 * DAO 数据访问对象工厂
 */
package com.vsoft.framework.security.persistent.dataaccessobjects.hibernate ;import java.util.HashMap ;
import java.util.Map ;
public class DAOSecurityFactory
{
private static Map < String , String > mapDAO = new HashMap < String , String > ( ) ; public DAOSecurityFactory ( )
{ } static
{
mapDAO
.put (
"UserInfoDAO" ,
"com.vsoft.framework.security.persistent.dataaccessobjects.hibernate.UserInfoDAO" ) ;
} public static IUserInfoDAO getIDAOUserInfo ( )
{
return new UserInfoDAO ( ) ;
} public static IDataAccessObjectable getDAOInstants ( String strDAOName )
throws ClassNotFoundException , IllegalAccessException ,
InstantiationException
{
if ( mapDAO.containsKey ( strDAOName ) )
{
String strFullName = ( String ) mapDAO.get ( strDAOName ) ;
return ( IDataAccessObjectable ) Class.forName ( strFullName )
.newInstance ( ) ;
}
else
{
return null ;
}
}}//以上这些编译都没有错误。//当我要创建接口的时候,编译出现错误了
IUserInfoDAO iUser = DAOSecurityFactory.getDAOInstants ( "UserInfoDAO" ) ;
//错误信息:
Type mismatch: cannot convert from IDataAccessObjectable to IUserInfoDAO A.java我是java的新手,看错误信息是类型错了,可是IUserInfoDAO是继承的空接口,怎么还没发转换类型?请问我这个问题该怎么解决?

解决方案 »

  1.   

    IUserInfoDAO extends IDataAccessObjectable   前者继承后者,前者是子类,后者是父类public static IDataAccessObjectable getDAOInstants IUserInfoDAO iUser = DAOSecurityFactory.getDAOInstants ( "UserInfoDAO" ) ;
    你这里的问题就相当于
    把父类转成子类的,显然是不行的
    改成:
    IdataAccessObjectable iUser = DAOSecurityFactory.getDAOInstants ( "UserInfoDAO" ) ;
    就可以了
      

  2.   

    if ( mapDAO.containsKey ( strDAOName ) )
    {
    String strFullName = ( String ) mapDAO.get ( strDAOName ) ;
    return Class.forName ( strFullName )
    .newInstance ( ) ;
    }
    /////////////////////////IUserInfoDAO iUser =(IUserInfoDAO )DAOSecurityFactory.getDAOInstants ( "UserInfoDAO" ) ;
      

  3.   

    强制转换吧.IUserInfoDAO iUser =(IUserInfoDAO )DAOSecurityFactory.getDAOInstants ( "UserInfoDAO" ) ;